之前計算機基礎內容忘得差不多了。
關於數據類型表示的數據范圍問題, 這里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