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 ...