取模和取余正解

关于取模和取余,网上误人的帖子太多了,也没讲清楚,越看越懵,经过多方查阅和自己的证实,现将正解归纳如下:

计算方法

对于整数 A ,B

取模和取余的运算过程相同:

  1. 求商:C = A / B
  2. 计算模或者余数:R = A - C * B

取模和取余的区别仅仅是在计算C的时候不同:

​ 取余计算时:C 值向0方向取整,比如:

C = A / B = 7 / 4 = 1.75    ,向0方向取整,则C取 1 ,则取余R = A - C * B = 3
C = A / B = -7 / 4 = -1.75  ,向0方向取整,则C取-1, 则取余R = A - C * B = -3
C = A / B = -7 / -4 = 1.75  ,向0方向取整,则C取 1, 则取余R = A - C * B = -3

​ 取模计算时:C 值向负无穷方向取整,比如:

C = A / B = 7 / 4 = 1.75     ,向负无穷方向取整,则C取1, 则取模R = A - C * B = 3
C = A / B = -7 / 4 = -1.75   ,向负无穷方向取整,则C取-2,则取模R = A - C * B = 1
C = A / B = -7 / -4 = 1.75   ,向负无穷方向取整,则C取1, 则取模R = A - C * B = -3

总结:

1.当两个数的符号相同,即同为负或者同为正时,取余和取模结果相同,因为C偏向同一个方向取值,使得C值一样。

2.符号不同时,取余结果的符号和分子一致,取模结果的符号和分母一致。

3.Java 中的取余运算是 %,而取模运算是 Math.floorMod() 。

 

Java 代码验证

public class test {

    public static void main(String[] args) {
        System.out.println("------Complementation------");
        System.out.println(7 % 4);
        System.out.println((-7) % 4);
        System.out.println(7 % (-4));
        System.out.println((-7) % (-4));

        System.out.println();
        System.out.println("------Modulo Operation------");
        System.out.println(Math.floorMod(7, 4));
        System.out.println(Math.floorMod(-7, 4));
        System.out.println(Math.floorMod(7, -4));
        System.out.println(Math.floorMod(-7, -4));
    }
}

输出结果:

------Complementation------
3
-3
3
-3

------Modulo Operation------
3
1
-1
-3

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值