C++中取余运算的实现方法 C++中的整数除法介绍

2021-02-23 15:15:59
来源:脚本之家

一、C++中的整数除法

C++中整数除法和取余用的是truncate除法(舍0取整),而给无符号类型赋值超出表示范围时候用无符号类型等于赋值对无符号类型可以表示的数值总数取余,智力的取余是基于floor除法的(向下取整)。

在整数除法中,Java/C 等语言用的是 truncate 除法,Python 用的是 floor 除法。

1、truncate 除法

向零取整。向 0 方向取最接近精确值的整数,换言之就是舍去小数部分,因此又称截断取整(Truncate)。可以这样理解,先用浮点数除法进行计算,计算结果直接舍去小数部分。

如:

5/-2=-2.5,所以整数除法中5/(-2)=-2

-5/2=-2.5,所以整数除法中-5/2=-2

-5/-2=2.5,所以整数除法中-5/-2=2

5/2=2.5,所以整数除法中5/2=0

2、C++中取余

有上述除法,我们已知a/b=c,而取余操作时a%b=d

那么d的求解方法如下:

1

2

3

4

5

 

d=a-(bc)

5%2=5-(22)=1

(-5)%(-2)=(-5)-((-2)2)=-1

5%(-2)=5-((-2)(-2))=1

(-5)%2=(-5)-(2*(-2))=-1

 

最后两个式子尤其值得注意

3、floor 除法

理解起来就是向下取整

5/-2=-2.5,所以floor除法中5/(-2)=-3

-5/2=-2.5,所以floor除法中-5/2=-3

-5/-2=2.5,所以floor除法中-5/-2=2

5/2=2.5,所以floor除法中5/2=2

4、C++中无符号变量被赋值超出他表示范围的情况

如我们给定unsigned char a;取值范围为0-255共256个数值,则

a = 5 输出为5 理解为 5-0256

a=257 输出为1 理解为 257-1256

a=-5 输出为251 理解为-5 - (-1256)

a=-257 输出为255 理解为 -257 - (-2256)

关键词: C++ 取余运算 整数除法

[责任编辑:]

为您推荐

时评

内容举报联系邮箱:58 55 97 3 @qq.com

沪ICP备2022005074号-27 营业执照公示信息

Copyright © 2010-2020  看点时报 版权所有,未经许可不得转载使用,违者必究。