取餘,遵循盡可能讓商向0靠近的原則。
取模,遵循盡可能讓商向負無窮靠近的原則。
如圖所示:
符號相同時,兩者不會衝突。
比如,7/3=2.3,產生了兩個商2和3
7=3x2+1 或 7=3x3+(-2)。
因此,7rem3=1,7mod3=1。
符號不同時,兩者會產生衝突。
比如,7/(-3)=-2.3,產生了兩個商-2和-3
7=(-3)x(-2)+1或7=(-3)x(-3)+(-2)。
因此,7rem(-3)=1,7mod(-3)=(-2).
為什麼遵循的是這樣的原則?
在matlab中,關於取餘和取模是這麼定義的:
當y≠0時:
取餘:rem(x,y)=x-y.xfix(x./y)
取模:mod(x,y)=x-y.xfloor(x./y)
其中,fix()函式是向0取整,floor()函式是向負無窮取整。
以前邊的運算為例:7/(-3)=-2.3,在這個運算中,x為7,y為-3,分別呼叫fix()和floor()兩個函式,得到結果是:
fix(-2.3)=-2
floor(-2.3)=-3,
rem(7,-3)=1,mod(7,-3)=-2
參考連線:
取餘和取模
對於整型數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這個值,一臉矇圈,為什麼是這個值呢?書上的解釋是 當我們賦給無符號型別乙個超出它表示範圍的值時,結果是初始值對無符號型別表示數值總數取模後的...
取餘和取模的區別以及c語言當中的取餘 運算
一 區別在c c 中 為取餘符,而在python中 為取模符 對整數a,b取餘和取模統一都分為2步 第一步 求整數商,c a b 第二步 計算模或餘數,r a c b 這裡,第二步對於取餘還是取模都是相同的,因為減法和乘法一般不會帶來誤差 但是對於第一步,除法會帶來誤差,取餘在計算c時是向0的方向捨...