為什么一個字節可以表示的有符號整數的范圍是-128~+127?


為什么是-127~128?

  對於一個字節來說,能夠表示的整數為什么不是-127~+127,也不是-127~+128,而是-128~+127

  對於有符號整數的表示和具體的編程語言無關,而是由硬件決定的,我們能想到的最簡單的方法就是用其中一位表示符號,剩余七位用來表示數據位。

 

  但這種方法有一個缺陷,就是會有+0和-0兩個0,能夠表示的數據只有-127~+127,同時使用兩個位組合表示同一個數字有些浪費,補碼很好的解決了這一問題。

  首先,對於正數的表示方法,與上述方法相同,但對於負數,首先符號位置為1,表示負。剩余7位數據位的表示方法和上述有很大不同。

  從一個9位組合10000000(無符號2進制)中減去一個負數的位組合,就是該負數值的數量。

  

  同理,-127可以表示為10000001:

   至此已經可以解釋為什么一個字節可以表示的有符號數范圍是-128~+127了。

 

  同時,如果要對二進制補碼取反,只需要對其每一位取反再加一即可,例如,1是10000000,所以-1是11111110+1,即11111111,和前面所看到的是一樣的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM