取模运算与取余运算

Piece of cake

表达式10/5,谁是除数?谁是被除数?谁被谁整除?(实不相瞒,我是20年来第一次搞清楚这个概念,哈哈哈哈)

在英文中,10/5会被翻译成10 divided by 5,字面意思就是10被5划分,显而易见,10是被除数,5是除数,10被5整除,豁然开朗的感觉有木有?

取模运算与取余运算的区别

定义:a = b*q + r 且 0 <= |r| < |b|
定义解释:a÷b=q…r,a是被除数,b是除数,q是商,r是余数
取模运算和取余运算的计算方法都是r=a-b*q 且 0 <= |r| < |b|

标注r的范围时,为什么要加绝对值?

如果a不能被b整除,则有两对(q,r),其中一对中r为正数(正余数),另一对中r为负数(负余数)

a=b*q+r
5=2*2+1r= 1,b=2,0<=r<b成立,0 <=|r|<|b|成立
5=2*3-1r= -1,b=2,0<=r<b不成立,0 <=|r|<|b|成立
5= -2*-2+1r=1,b= -2,0<=r<b不成立,0 <=|r|<|b|成立
5= -2*-3-1r=-1,b= -2,0<=r<b不成立,0 <=|r|<|b|成立

取模运算(Modulus Operation),简记mod尽可能让商向负无穷靠近,即a÷b向下取整得到余数
取余运算(Remainder Operation) ,简记rem尽可能让商向0靠近,即a÷b向着0的方向取整得到余数

不太理解?举几个栗子,一看便知:
1.
5÷2=2.5
取模:向下取整q=2,mod(5,2)=1
取余:向0取整q=2,rem(5,2)=1
2.
5÷-2=-2.5
取模:向下取整q=-3,mod(5,-2)=-1
取余:向0取整q=-2,rem(5,-2)=1
3.
-5÷2=-2.5
取模:向下取整q=-3,mod(-5,2)=1
取余:向0取整q=-2,rem(-5,2)=-1
4.
-5÷-2=2.5
取模:向下取整q=2,mod(-5,2)=-1
取余:向0取整q=2,rem(-5,2)=-1

总结

当a和b正负相同时,求模运算和求余运算结果一致;
当正负不相同时,结果不一样。

另外,对于%,在不同编程语言中,对其解释也不同,比如c/c++,java 为取余,而python则为取模

模运算法则

  1. (a + b) % p = (a % p + b % p) % p
  2. (a - b) % p = (a % p - b % p) % p
  3. (a * b) % p = (a % p * b % p) % p
  4. (a^b) % p = ((a % p)^b) % p
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值