取模与取余

https://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html
https://www.jianshu.com/p/5e1a83e8be3b

更多内容参考:语雀-https://www.yuque.com/zhangshuaiyin/algorithms

取模与取余区别

  • 概念上:取模是计算机术语,取余属于数学概念;
  • 结果上:当同号的两个数相除,二者相同,有负数的情况下,结果不同;
  • 在 Java 中,% 运算符代表取余操作。
  • 计算上:
    • 取余运算在计算商值时商值向 0 方向舍入,商值靠近0原则;
    • 取模运算在计算商值时商值向负无穷方向舍入,商值小原则;

计算步骤

对于整型数,取余和取模的步骤是一样的
对于整数a,b,若想求其余数和模,则有:
整数商:c = a / b ;
取余/取模:r = a - b * c

取余和取模的区别在于整数商的计算方式不同,取余运算的整数商参考靠近0原则,取模运算的整数商参考商值小原则。

例子

以 5 与 3 之间运算举例:

取模

简述商值计算过程取模值
5 mod 3 = 25/3 = 1.66 商取小原则 商=15 - 3 * 1 = 22
-5 mod 3 = 1-5/3 = -1.66 商取小原则 商=-2-5 - (3 * -2) = 11
5 mod -3 = -15/-3 = -1.66 商取小原则 商=-25 - (-3 * -2) = -1-1
-5 mod -3 = -2-5/-3 = 1.66 商取小原则 商=1-5 - (-3 * 1) = 2-2

取余

简述商值计算过程取余值
5 rem 3 = 25/3 = 1.66 商靠0原则 商=15 - 3 * 1 = 22
-5 rem 3 = -2-5/3 = -1.66 商靠0原则 商=-1-5 - (3 * -1) = - 2-2
5 rem -3 = 25/-3 = -1.66 商靠0原则 商=-15 - (-3 * -1) = 22
-5 rem -3 = -2-5/-3 = 1.66 商靠0原则 商=1-5 - (-3 * 1) = - 2-2

深入理解

在 12 模的时钟中;假设当前时针指向 6 点,而准确时间是 2 点,调整时间最少有以下两种拨法

倒拨4小时:6-4=2
正拨8小时:(6+8) mod 12=2

除此之外,还有 正拨 8 +12 小时等,(6+20) mod 12 = 2;
mod 为取模,在正整数中等于取余数。


即上面结果表明,正拨(加法)的结果可以用倒拨(减法)来替代!
而对于如何用一个正数来替代一个负数(减法可以看到加一个负数),数学上有一个概念叫做同余。

同余

两个整数 a,b,若他们的除以整数 m 所得的余数相等,则称 a,b 对于模 m 同余。记作 a ≡ b (mod m),读作 a 与 b 关于模 m 同余。
举例:
2 mod 12 = 2
14 mod 12 = 2
26 mod 12 = 2
所以,2、14、26 关于模 12 同余

应用

取模的本质是:取模的值,必定在模的范围内;所以,计算机领域引用该特性,使元素路由算法不超出边界,并有规则存放。
首先确定模(范围);元素取模,使元素有规则的落入模的范围内容器中。即余数的范围小于除数的值。


举例:
对于两个整数 a,b
如果 a <= b,令 r = a % b,则 0 <= r < b,且只有当 a = b 时,r = 0;

以 5 为模
3 % 5 = 3
2 % 5 = 2
5 % 5 = 0
(3 + 5) % 5 = 3
(2 + 5) % 5 = 2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值