有符號數據類型的最小值問題丨C

疑惑

以short類型爲例,其在16位、32位、64位編譯器中均佔2個字節(Byte),即16個位(bit)

分析

在計算機中正負數都是用其補碼形式存儲的

解釋

有符號short類型中,正數部分(另外包括了0)的取值範圍位爲 0 ~ 2^15 -1 , 其原碼、反碼、補碼相同,均從0000 0000 0000 0000 …… 0111 1111 1111 1111,可看出數值從0到32767之間遞增;
補碼中零的編碼本該只有一個,也就是補碼中會比原碼多一個0的編碼出來,這個編碼就是 1000000000000000,因爲任何一個原碼都不可能在轉成補碼時變成1000000000000000。所以,人爲規定 1000000000000000這個補碼編碼爲-32768;
所以,補碼系統中,範圍是-32768~32767;

  • 二進制原碼的最小值是1111111111111111(-32767)
  • 二進制補碼的最小值是1000000000000000( -32768)
  • 二進制補碼1111111111111111的值是 -1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章