C++/JAVA中 负数的模运算问题 【向0取整】

这是复制别人的,可是我还没学会怎么转载,也就自己看看

1.取模运算

(1)全都是正数,全都是负数情况

7%2=1,

(-7)%(-2)=-1

没有争论,比较好理解

(2)一正一负情况

如a%b,

第一种情况:a>0,b<0,如

-7%3=?

第二种情况:a<0,b>0,如

7%(-3)=?

这种情况怎么处理呢?

说明:

除法的取整分为三类:向上取整、向下取整、向零取整。
1.向上取整:向+∞方向取最接近精确值的整数。

在这种取整方式下,7/4=2,7/(-4)=-1,6/3=2,6/(-3)=-2
2.向下取整:向-∞方向取最接近精确值的整数。

在这种取整方式下,7/4=1,7/(-4)=-2,6/3=2,6/(-3)=-2
3.向零取整:向0方向取最接近精确值的整数,换言之就是舍去小数部分,因此又称截断取整。

查阅相关文章,得出c/c++和java采用的是向零取整的模式,而Python等其他语言大都采用其他两种方式非向零取整模式

所以对于c/c++

-7%3=-1

过程为 -7%3=-7-(-7/3)*(3)

7%(-3)=1

总结:

1.对于任何同号的两个整数,其取余结果没有争议,所有语言的运算原则都是使商尽可能小。 
对于异号即一正一负的的两个整数,C++/Java的原则是使商趋向于0,很多新型语言和网页计算器的原则是使商远离0,确定了商,取余结果自然就得出了

2.一正一负时,结果符号可以参考除数和被除数决定,即商与除数的乘积等于被除数符号一致来确定

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值