C++中取余运算的实现
一、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-(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++中无符号变量被赋值超出他表示范围的情况
如我们给定unsignedchara;取值范围为0-255共256个数值,则
a=5输出为5理解为5-0256
a=257输出为1理解为257-1256
a=-5输出为251理解为-5-(-1256)
a=-257输出为255理解为-257-(-2256)
到此这篇关于C++中取余运算的实现的文章就介绍到这了,更多相关C++取余运算内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。