但是我感覺不可能吧,如果是這樣的話,那byte的設計應該是有問題的
於是我便自己算了一下
以下是運算過程
首先是最大值
乙個位元組八位
最大就是0111 1111
也就是 1*2^0+1*2^1+....+1*2^7 = 127
這個很好算沒錯
那麼問題來了,負數呢?
我們知道負數在計算機中的儲存是以補碼的形式存在的,也就是說,在計算機中看到的負數的二進位制不是其真正的二進位制是其補碼的二進位制表示
同理乙個位元組八位
最小就是1000 0000
這是我們在計算機中看到的乙個位元組的最小負數的表示,也就是其補碼,於是我們對其進行轉換
首先取反
結果是1111 1111
再加1結果是
1 1000 0000這才是它的本來面目
換算成二進位制也就是-128
好像我也沒涉及到什麼有兩個零的說法
不知道這樣運算正確與否
如若有錯望請指教
為什麼byte取值是 128到127
建議你baidu下 補碼 就會比較清楚了,第一位是符號位。00000000 0 11111111 1 10000000 128 01111111 127 負數的補碼 負數的補碼是對其原碼逐位取反,但符號位除外 然後整個數加1。同乙個數字在不同的補碼表示形式裡頭,是不同的。比方說 15的補碼,在8位2...
關於byte儲存 128的問題
首先,byte的儲存範圍是 128到127,那麼是怎麼做到的呢,我覺得這乙個解釋方法可以解釋。首先,乙個8位2進製的數可以表示的範圍是0到255,即 0000 0000 到 1111 1111 那麼我們把最左邊的一位看做是正負號的標示,那麼正數的範圍是 0000 0000 到 0111 1111 即...
Integer的快取( 128到127)
先上原始碼 returns an instance representing the specified value.if a new instance is not required,this method should generally be used in preference to the...