c语言去摸运算的本质

来源:互联网 发布:国外十大网络翻唱歌手 编辑:程序博客网 时间:2024/05/23 10:53

文章来自:http://blog.csdn.net/yingbinchina/article/details/2715549

数学中的 余数(remainder) 其实就是 取模(mod),即:

 x mod y = x%y
 x%y     = x - y[x/y], for y!=0.

数学中的余数概念和我们的计算机中的余数概念一致,但实现却不一致。
其中 [x/y] 代表的是 x/y 的最小下界。

例:

   数学中的算法实现:
     -3 mod 2         = -3 - 2*[-3/2]
                            = -3 - 2*[-1.5]
                            = -3 - 2*(-2)
                            = -3 + 4
                            = 1
  计算机的算法实现:
         -3%2          = -3 - 2*(-3/2)
                            = -3 - 2*(-1)
                            = -3 - (-2)
                            = -1
所以计算机中的取余实际上是:
       x%y = x - y(x/y), for y!=0.

总结:

对于正数,二者(指数学实现、计算机实现)计算出的结果是相等的,但是负数就不相等了。这就意味着,如果以后在使用数学中余数相关定理的时候,要注意计算机中余数的计算和数学定义不是完全一致的,所以在计算机上,对于负数,数学定理并不完全适用。当然,对于正数,二者是没有区别的。

0 0
原创粉丝点击