取餘和取模的區別以及c語言當中的取餘 運算

2021-09-29 06:33:21 字數 999 閱讀 2272

一:區別在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這個值,一臉矇圈,為什麼是這個值呢?書上的解釋是 當我們賦給無符號型別乙個超出它表示範圍的值時,結果是初始值對無符號型別表示數值總數取模後的...