同一个%的不同答案

一、前言:
博主在C语言计算取余“%”时,遇到了一些困扰,便上网百度了一下取余运算符,结果网上众说纷纭,各执一词,让我反而更加困扰了。在看了很多文章之后,终于弄明白了其中的一些问题。对于同于问题之所以出现不同答案,就是Mod有很多意思, Mod作为取余和取模的计算方法略有差异!现就其中差异记录下来,供读者参考(本文仅谈及数学和编程中的Mod)。
二、Mod的多重身份:
1、MATLAB函数;
2、数学符号:同余符号,取余符号;
3、计算机语言取余运算符;
三、取余和取模的区别:
对于整型数a,b来说,取模计算和取余运算都是:
1.求整数商: c = a / b;
2.计算模或者余数: r = a - c * b。

取模运算和取余运算在第一步不同:取余运算在取c的值时,向正无穷方向舍入(类似ceil()函数);而取模运算在计算c的值时,向负无穷方向舍入(类似floor()函数)。
例如:计算 -7 Mod 4(符号表示为-7 % 4)
那么:a = -7;b = 4;
第一步:求整数商c,如进行取模运算c = -2(向负无穷舍入),取余运算c = -1(向正无穷方向舍入)
第二步:计算模和余数的公式相同,但因为c的值不同,取模时r = 1,取余时r = -3。
归纳:当a和b符号一致时,取模运算和取余运算所得的c值一致,因此结果一致。
   当a和b符号不一致时,结果自然不一致。

规律:取模运算结果的符号与b一致,取余运算结果的符号与a一致。


值得一提的是,


1、从小学开始就接触的余数计算方式就是取模运算,具体定义如下:
给定一个整数p,任意一个整数n,一定存在等式:
n = k * p + r ;
其中k、r是整数,且0 ≤ r ≤ p,则称k为n除以p的商,r为n除以p的余数。
对于正整数p和整数a定于如下运算:
取模运算:a % p(或a mod p),表示a除以p的余数。


2、在c / c++和,java语言中,余数则不受限制,可以是任意实数,因为c语言中Mod即运算符%为取余,python则不同,为取模。





你可能感兴趣的:(mod,取模,取余)