舉個例子,假設使用 8 位表示數字,如果是無符號數,最大值為 1111 1111,換算成十進位為 255,如果是有符號數,最大值為 0111 1111(以 1 打頭的數是負數),換算成十進位為 127,

127 差不多是 255 的一半

總結:

對於 n 位數字,所能表示的數的個數都是 [公式] ,因為還要表示 0,所以,如果要表示無符號的數,最大數為 [公式] ,如果要表示有符號的數,首先砍掉一半的負數,再減去 0,所以,最大值為 [公式] ,即 [公式] 差不多是 [公式] 的一半


推薦《深入理解計算機系統》


一個是 31位 表示數字, 一位 為符號。 - 2^31 ~ 2^31-1

另一個 就是32位表示, 沒有符號, 2^32

所以 看似是一半

實際上 數量是一樣的。 都是 2^32 個數據。


int取值範圍是-2的31次方減1到2的31次方減1

unsigned int 範圍是2的31次方減一

這不就是一半麼


最高位作為符號!

看計算機原理應該有!


32位整數只有2的32次方的表示空間,有符號整數只要正數負數一半一半,無符號整數正數佔用了整個空間,當然出現這種情況。


推薦閱讀:
相關文章