byte類型的最小值為什么是-128而非-127


之前計算機基礎內容忘得差不多了。

關於數據類型表示的數據范圍問題, 這里byte類型表示的是-128~127 , 為什么不是-127~127 ?其實不光是byte類型,諸如byte、short、int、long等涉及到有符號的數據內向都存在負數表示要多一位的問題, 為什么是這樣的呢? 這其實是一個計算機內部的數值表示方法的問題,一般來說,計算機科學表示數值的方法有:原碼、反碼和補碼,現在的計算機用補碼存儲整數數值


原碼,就是用二進制表示的原始編碼,
反碼,就是除符號位外,其它位取反
補碼,正數的補碼等於原碼,負數的補碼等於反碼加1

 

在這里以byte為例,

計算機中1byte=8bit,因此byte的最大正數為二進制的01111111 = 27-1 = 127 (0位符號位),這個沒問題,

對於負數而言,其補碼由於需要反碼加1 , 對於11111111其補碼就是10000001=-1,依次類推11111110補碼為10000010=-2........一直到10000001補碼為11111111=-127,接下來最大的負數為10000000十進制其實是-0 ,其實是沒有意義的(與+0重復),計算機就將這一數值10000000表示為最大負數-128

 


免責聲明!

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



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