計算機中32位int型別變數的範圍,其中int型別是帶符號整數。
正數在計算機中表示為原碼,最高位為符號位:
1的原碼為0000 0000 0000 0000 0000 0000 0000 0001
2147483647的原碼為0111 1111 1111 1111 1111 1111 1111 1111
所以最大的正整數是2147483647
負數在計算機中表示為補碼,最高位為符號位:
-1:原碼為1000 0000 0000 0000 0000 0000 0000 0001,
反碼為1111 1111 1111 1111 1111 1111 1111 1110,
補碼為1111 1111 1111 1111 1111 1111 1111 1111
-2147483647:
原碼為1111 1111 1111 1111 1111 1111 1111 1111,
反碼為1000 0000 0000 0000 0000 0000 0000 0000,
補碼為1000 0000 0000 0000 0000 0000 0000 0001
所以最小的負數是-2147483647嗎?錯,不是。
在二進位制中,0有兩種表方法。
+0的原碼為0000 0000 0000 0000 0000 0000 0000 0000,
-0的原碼為1000 0000 0000 0000 0000 0000 0000 0000,
因為0只需要乙個,所以把-0拿來當做乙個最小的數-2147483648。
-2147483648的補碼表示為1000 0000 0000 0000 0000 0000 0000 0000,在32位沒有原碼。
注意,這個補碼並不是真正的補碼,真正的補碼是1 1000 0000 0000 0000 0000 0000 0000 0000,溢位。
所以帶符號32位int型別整數為-2147483648~2147483647
c語言int表示範圍以及移位運算子
剛剛看到的幾個小基礎知識,記錄一下 在int型為32位的硬體環境中,int的表示範圍是 2的31次方 到2的31次方減1 原因 因為int是帶符號型別,所以最高位為符號位,於是最大表示的正數是 01111111 11111111 11111111 11111111,也就是2的31次方減1。再來看最小...
16 32位數,表示範圍
xx位二進位制數,表示的數的範圍是多少呢,疑惑。16位無符號二進位制數能表示2 16個數,表示範圍是0 65535 而有符號16位二進位制,有1位符號位,表示範圍是 32768 32767。之所以是65535,是因為0也是一位,0 65535就是65536個了,即2 16 有符號就是有一位是符號位,...
C 基本資料型別大小及表示範圍
ansi c c 基本資料型別 type size 數值範圍 無值型void 0 byte 無值域布林型 bool 1 byte true false 有符號短整型 short int signed short int 2 byte 32768 32767 無符號短整型 unsigned short...