tip1:C++中取余运算

本文详细介绍了C++中的整数除法和取余操作,包括truncate除法(向零取整)和floor除法(向下取整)。在C++中,整数除法遵循截断原则,而Python则采用地板除法。此外,还探讨了C++中无符号类型赋值超出范围时的情况,以及取余的计算方法。
摘要由CSDN通过智能技术生成

一、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的求解方法如下:
d=a-(bc)
5%2=5-(2
2)=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-1
256
a=-5 输出为251 理解为-5 - (-1256)
a=-257 输出为255 理解为 -257 - (-2
256)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值