一:區別在c/c++中%為取餘符,而在python中%為取模符
對整數a,b取餘和取模統一都分為2步:
第一步:求整數商, c = a / b
第二步:計算模或餘數,r = a - c * b
這裡,第二步對於取餘還是取模都是相同的,因為減法和乘法一般不會帶來誤差;但是對於第一步,除法會帶來誤差,取餘在計算c時是向0的方向捨入的,比如-1/5=-0.2,於是向0取整得0,因此餘數 r1 = -1 - 0 * 5 = -1;但是取模在計算c時是向負無窮大方向捨入的,即上面的-0.2會取整為-1,因此模 r2 = -1 - (-1) * 5 = 4;
因此,對於兩個數都是正數來說,沒有差別,因為0和負無窮大在小數c的同乙個方向上;但是對於存在乙個負數的情況下,0的方向和負無窮大在c的兩個相反的方向,因此就有差別。
「當我們賦給無符號型別乙個超出它表示範圍的值時,結果是初始值對無符號型別表示數值總數取模後的餘數。例如, 8位元大小的unsigned char 可以表示0 至 255 區間內的值,如果我麼賦值給此型別變數乙個區間以外的值,則實際的結果是該值對256取模後所得的餘數。因此,把 -1 賦值為8位元大小的unsigned char 所得的結果是255」
二:運算
(1)當兩個數都是正數時包含兩種情況,
除數大於被除數,例如2%5,那結果就是被除數2
除數小於被除數,例如5%2,那結果1
(2)當有乙個數為負數時
if |x|>|y|
ans:x+y
else
ans: x
(3)當兩個數都是負數時,將兩個數視為正整數,但結果加乙個負號.
//以下為**測試
#include
#include
intmain()
//執行結果為
注:%運算子的運算元必須為整型
程式語言中取模和取餘的區別
取餘,遵循盡可能讓商向0靠近的原則。取模,遵循盡可能讓商向負無窮靠近的原則。如圖所示 符號相同時,兩者不會衝突。比如,7 3 2.3,產生了兩個商2和3 7 3x2 1 或 7 3x3 2 因此,7rem3 1,7mod3 1。符號不同時,兩者會產生衝突。比如,7 3 2.3,產生了兩個商 2和 3...
取餘和取模
對於整型數a,b來說,取模運算或者求餘運算的方法都是 1.求 整數商 c a b 2.計算模或者餘數 r a c b.但是求模運算和求餘運算在第一步不同 求餘運算在取c的值時,向0 方向捨入 int強制轉換 而取模運算在計算c的值時,向負無窮大方向捨入 floor 函式 因此,當a和b符號一致時,求...
取模和取餘
近日在讀c primer第五版,在2.1.2型別轉換一節中,有這樣乙個例子 unsigned char c 1 假設char佔8位元,c的值位255當看到255這個值,一臉矇圈,為什麼是這個值呢?書上的解釋是 當我們賦給無符號型別乙個超出它表示範圍的值時,結果是初始值對無符號型別表示數值總數取模後的...