————Python模运算个人总结归纳————
a和b同为正整数的时候
如果 a < b 则结果为 a
3 % 5 = 3
10 % 20 = 10
123 % 756 = 123
.....诸如此类
如果 a > b 结果为 a — (b在范围a以内的最大倍数值)做差。
a = 6
b = 2
6 - 2 * 3(6以内2的最大倍数值) = 0
6 % 2 = 0
a = 121
b = 6
121 - 6 * 20(121以内的6的最大倍数值为120)
121 % 6 = 1
a和b同为负整数的时候
如果 a > b 则结果仍为 a
-4 % -8 = -4
-7 % -9 = -7
-1234 % -5678 = -1234
......诸如此类
如果 a < b 则结果为 a — (b在范围a以内的最大倍数值)做差
a = -8
b = -3
-8 - (-3 * 2) (-8 以内-3的最大倍数值为-6) = -2
-8 % -3 = -2
结论一 同为负的模运算可以遵照同为正的整数模运算在结果前加(—)负号
-a % -b = -c 可以看作 a % b 后在结果前加符号
-a % -b = -c 等价 a % b = c , c取反 = -c
-8 % -3 等价 8 % 3 结果取反
-8 % -3 = -2
8 % 3 = 2 结果取反为 -2
优点一 更加直观不容易出错
a 或者 b 一方为负数时
按照模运算公式
模运算公式 a % b 等价 a - (b * (a / / b) )
更为直观的判断
无论是 -a % b 还是 a % -b 对我来说都是做和运算
我的运算公式 a%b一方为负时:
b恒取绝对值比a大的最小倍数值做和
当 a < 0 , b > 0的时候结果恒为正
a = -8
b = 3
-8 % 3 = 1
等价 -8 + (3 * 3)“b取绝对值刚好比a大的倍数值”
b=3 绝对值刚好比a大的是9 然后两者做和运算 -8 + 9 = 1
-16 % 12 = 8 等价-16 + 24 = 8
-27 % 13= 12 等价 -27 + 39 =12
当 a > 0 , b < 0的时候结果恒为负
a = 8
b = 3
8 % -3 = -1
等价 -8 + (3 * 3)“b取绝对值刚好比a大的倍数值”
b=3 绝对值刚好比a大的是9 然后两者做和运算 8 + -9= -1
16 % -12 = -8 等价16 + -24 = -8
27 % -13 = -12 等价 27 + -39 = -12