在看到一些作者对于%和mod的操作讲的过于笼统,无法很好理解之后,本人经过一些整理,通俗的介绍了二者之间最明显的区别,以便于初学者学习。
一:对于二者的区别。
取余%采用向零方向取整的方法。
取模mod采用向负无穷方向取整的方法。
二者有相似之处,不同之处是在处理负数的情况的时候。
二:%的计算过程
欲计算a%b:
对于整型数a,b来说,取模运算或者求余运算的方法都是:
1. 求 整数商: c = a/b。(mod和%的最大区别之处)。
2. 计算模或者余数: d = a - c*b.
例如:计算5%-3。 首先5÷-3=-1。接着,余数d为5-(-3*-1)==5-3=2
因此5%-3=2。
计算-5%3。 首先-5%3=-1。 接着,余数d为-5-(3*-1)=-5- -3=-5+3=-2。
因此-5%3=-2。
三:mod于%的不同之处在哪里?
不同在取余计算过程的第一步!(即c=a/b)
对于取余,c总是朝着箭头指向0的方向取整数,如下图:
这个过程称为向0取整。
对于取模(mod),c总是一个方向,即朝着-x轴的方向取整,如下图:
这个过程称为向负无穷取整。
这时,我们不难发现,我们在标题一中所说mod和%具有相同之处的地方就在于mod和%对于c为正数时的取整方向是一样的。
四:例子
有了上述的铺垫,我们来计算5对-3取mod的结果。
①首先,c=5/-3≈-1.6。经过向负无穷取整后,c=-2。
②接着,d=5-(-3*c)=5-(-3*-2)=5-6=-1。
对比取%的结果,5%-3=2。
至此,我们总结以下:
①%,在计算a与b的商的时候采用向0取整。
②mod,在计算a与b的商的时候采用向负无穷取整。
创造不易,希望能够留住读者的赞!