對取模後的餘數的理解(無符號部分)

2021-10-02 03:58:33 字數 627 閱讀 2919

賦值給無符號型別乙個超出它所表示的值時,結果是初始值對無符號型別表示數值總數去模後的餘數。

取模後的餘數是什麼意思呢?

給定乙個正整數p,任意乙個整數n,一定存在等式:

n = k * p + r;

其中k、r是整數,且0 <= r < p,則稱 k 位 n 除以 p 的商,r 為 n 除以 p 的餘數。

對於整型數a,b來說,取模運算或者求餘運算的方法都是:

求 整數商: c = a/b;

計算模或者餘數: r = a - c*b

求模運算和求餘運算在第一步不同: 取餘運算在取c的值時,向0 方向捨入(fix()函式);而取模運算在計算c的值時,向負無窮方向捨入(floor()函式)。

-1 mod 256

第一步:c = -1/256,求模結果為-1;求餘結果為0;

第二步:取模時r = -1 - (-1 * 256) = 255;取余時r = -1 - 0 = -1;

現在理解了如8bit大小的unsigned char可以表示0至255區間內的值,如果賦了乙個區間外的值,則實際結果為該值對256取模後的餘數。因此把-1賦給8bit的unsigned char所得結果為255這句話的意思了。

對無符號型別的建議

盡量不要在你的 中使用無符號型別,以免增加不必要的複雜性。尤其是,不要僅僅因為無符數不存在負值 如年齡 國債 而用它來表示數量 盡量使用象int那樣的有符號型別,這樣在涉及公升級混合型別的複雜細節時,不必擔心邊界情況 例如 1被翻譯成非常大的正數 只有在使用位段和二進位制掩碼時,才可以用無符號數。應...

對python符號的理解

keywords and 邏輯算符 和 del 刪除後面的變數 from not 相反 while while迴圈 as elif elseif global 定義為全域性變數 or 邏輯算符 或 with assert else 其他 if if條件判斷 pass yield break exce...

取模運算的理解和應用

軟體開發過程中,總會遇到取餘,取模,取整的計算或者思想,這裡小結一下。取模和取餘,這兩個運算在真整數的時候是乙個概論,在負整數進行除法運算時不同。符號 取整 即求商。符號 取模簡述 商值取模值 5 mod 3 2 5 3 1.66 商取小原則 商 1 5 3 1 2 2 5 mod 3 1 5 3 ...