取模運算的理解和應用

2021-10-07 15:33:46 字數 1542 閱讀 6901

軟體開發過程中,總會遇到取餘,取模,取整的計算或者思想,這裡小結一下。

取模和取餘,這兩個運算在真整數的時候是乙個概論,在負整數進行除法運算時不同。符號:「 % 」。

取整:即求商。符號:「 / 」。

取模簡述

商值取模值

5 mod 3 = 2

5/3 = 1.66 商取小原則 商=1

5 - 3 * 1 = 2

2-5 mod 3 = 1

-5/3 = -1.66 商取小原則 商=-2

-5 - (3 * -2) = 1

15 mod -3 = -1

5/-3 = -1.66 商取小原則 商=-2

5 - (-3 * -2) = -1

-1-5 mod -3 = -2

-5/-3 = 1.66 商取小原則 商=1

-5 - (-3 * 1) = 2

-2取餘

簡述商值

取餘值5 rem 3 = 2

5/3 = 1.66 商靠0原則 商=1

5 - 3 * 1 = 2

2-5 rem 3 = -2

-5/3 = -1.66 商靠0原則 商=-1

-5 - (3 * -1) = - 2

-25 rem -3 = 2

5/-3 = -1.66 商靠0原則 商=-1

5 - (-3 * -1) = 2

2-5 rem -3 = -2

-5/-3 = 1.66 商靠0原則 商=1

-5 - (-3 * 1) = - 2

-2「模」 是指乙個計量系統的計數範圍;如時鐘,12個整點為計算範圍,則模為12;計算機也是乙個計量機器,模為32位或者64位;例:5 mod 3 = 2例子中,模為3,2為取模的值。

「取模」實質上是計量器產生「溢位」的量,它的值再計量器上表示不出來,計量器上只能表示出模的餘數(取模);任何有模的計量器,均可化為加減法運算

例如: 假設當前時針指向10點,而準確時間是6點,調整時間可有以下兩種撥法:

一種是倒撥4小時,即:10-4=6

另一種是順撥8小時:10+8=12+6=6

在以12模的系統中,加8和減4效果是一樣的,因此凡是減4運算,都可以用加8來代替.

對「模」而言,8和4互為補數.實際上以12模的系統中,11和1,10和2,9和3,7和5,6和6都有這個特性.共同的特點是兩者相加等於模.

對於計算機,其概念和方法完全一樣.n位計算機,設n=8, 所能表示的最大數是11111111,若再加1稱為100000000(9位),但因只有8位,最高位1自然丟失.又回了00000000,所以8位二進位制系統的模為2(8). 在這樣的系統中減法問題也可以化成加法問題,只需把減數用相應的補數表示就可以了.把補數用到計算機對數的處理上,就是補碼.

取模的本質是:取模的值,必定會模的範圍內;所以,計算機領域引用該特性,使元素路由演算法不超出邊界,並有規則存放。

思路:首先確定模(範圍);元素取模,使元素有規則的落入模的範圍內容器中。

應用:hashmap,桶排序,資料庫分表,分布式節點路由演算法,循壞佇列判斷是否隊滿((tail+1)%n==head)等。

取模運算的應用

有時候數非常大是可以考慮取模,多選擇一些模數提高正確率。取模運算可以理解為乙個雜湊雜湊函式,為了避免雜湊衝突,可以分別模不同的模數,如果每乙個模數都沒有產生雜湊衝突那麼就可以認為兩個數是相同的。判斷兩個數a,b是否相等,如果膜上10相等,膜上11相等。那麼有a k 110 b。110是10和11的最...

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

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

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

通常取模運算也叫取餘運算,他們都遵循處罰法則,返回結果都是餘數 但是仔細看是不一樣的,詳細請看例項 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...