Java中的取餘運算和取模運算

2021-08-01 05:06:30 字數 1453 閱讀 6157

通常取模運算也叫取餘運算,他們都遵循處罰法則,返回結果都是餘數;

但是仔細看是不一樣的,詳細請看例項:

1.取餘

rem(3,2)=1

rem(-3,-2)=-1

rem(3,-2)=1

rem(-3,2)=-1

2.取模

mod(3,2)=1

mod(-3,-2)=-1

mod(3,-2)=-1

mod(-3,2)=1

由此可以看出,rem和mod是有符號區別的!

當除數與被除數的符號相同時,rem和mod的結果是完全相同的;當除數與被除數的符號不相同時,結果不同。

具體說,rem結果的符號與被除數相同;mod結果的符號與除數相同。

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整除。

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

python模運算求餘 取模運算和取餘運算

取模運算和取餘運算 取模運算 modulo operation 和取餘運算 complementation 兩個概念有重疊的部分但又不完全一致。主要的區別在於對負整數進行除法運算時操作不同。取模主要是用於 計算機術語中。取餘則更多是數學概念。模運算在數論和程式設計中 都有著廣泛的應用,從奇偶數的判別...

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

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

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

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