Mod(求模或求餘)

2021-05-08 20:52:38 字數 1098 閱讀 9175

1.  求餘:取整除後的餘數,例如:

10 mod 4 = 2;   -17 mod 4 = -1;   -3 mod 4 = -3;    4 mod (-3) = 1;    -4 mod 3 = -1;

如果a mod b是異號,那麼得出的結果符號與a相同; 當然了,a mod b就相當與a-(a div b)*b 的運算。例如:

13 mod 4 = 13 - (13 div 4) * 4 = 13 -12 = 1

(異號求餘規則:a % b = c, 則c的值為:|a| % |b|的結果,讓這個結果與a同號,然後再和b相加。比如:|-15| % |4| = 3,

然後-3 + 4 = 1, 如果是15 % (-4), 則結果為 3 + (-4) = -1, 注意,一定是兩個數異號時才是這種規則,同號跟一般的演算法相同)

2.  求模:規定"a mod b"的b不能為負數,其運算規則如下:

1)  當a > b時,不斷從a中減去b,直到出現了乙個小於b的非負數。

例如:8 mod 3 = 2

2)  當a < b, 且 a > 0時,結果為a。 

例如:3 mod 8 = 3

3)  當a < b, 且 a < 0時,則b不斷的加到a上,直到結果是乙個小於b的非負數為止。

例如: -3 mod 4 = 1,  -4 mod 3 = 2

注意:當a、b全為正數時,無論是"求餘"還是"求模",得到的結果是相同的。如:22 mod 6 = 4, 只有當a < 0時,兩種運算結果

不同。

例如:n為四位數7341, 可用下面的方法分離出它的個、十、百、千位。

7431 mod 10 =1  (個位數)

(7431 mod 100) div 10 = 4 (十位數)

(7431 mod 1000) div 100 = 3 (百位數)

7431 div 1000 =7 (千位數)

此外,利用 a mod b,可以判斷a能否被b整除。當a mod b = 0時,a能被b整除。

注意:a,b都必須為整數。如:50.0 mod 20.0 是不可以的。

注:求模可看成是定位,如%10定位到個位,%100定位到百位。div可以看成是求該位確定數。

關於求模與求餘

我覺得很多人搞不清楚這兩個概念的區別,剛好在翻譯lua手冊時遇到 與math.fmod這兩個操作,順便做一下說明吧。求模與求餘的區別。假設對a與b兩個 整數做求模或求餘操作。那麼第一步是先求整數商c,即 a b 的值,第二步是計算模或餘數 a c b 求模與求餘的區別在於怎麼處理 a b 的值。求模...

取模和求餘的區別

參考 通常情況下取模運算 mod 和求餘 rem 運算被混為一談,因為在大多數的程式語言裡,都用 符號表示取模或者求餘運算。在這裡要提醒大家要十分注意當前環境下 運算子的具體意義,因為在有負數存在的情況下,兩者的結果是不一樣的。對於整型數a,b來說,取模運算或者求餘運算的方法都是 1.求 整數商 c...

取模運算和求餘運算的區別

通常情況下取模運算 mod 和求餘 rem 運算被混為一談,因為在大多數的程式語言裡,都用 符號表示取模或者求餘運算。在這裡要提醒大家要十分注意當前環境下 運算子的具體意義,因為在有負數存在的情況下,兩者的結果是不一樣的。對於整型數a,b來說,取模運算或者求餘運算的方法都是 1.求 整數商 c a ...