原碼,反碼,補碼, 2進位制,16進位制,byte位元組,雙位元組
阿新 • • 發佈:2018-11-01
計算機都以 補碼形式存在:
1.正數的原碼、反碼、補碼都一樣
負數的補碼==原碼(除符號位) 按位取反再+1;原碼==補碼(除符號位)按位取反再+1;
十進位制 | 原碼 | 反碼 | 補碼 | ||||
|
|
|
|
||||
|
|
|
|
2.計算機為何以補碼形式存在
a.無法進行減法運算
b. +0 和-0 該如何表示
java 程式 ,一個byte 範圍是 -128~127
byte bb= 130; 會報錯,為什麼?
bb=10000010,如果 是一個位元組表示,那麼表示的是負數,存的是負數的補碼,求得原碼是:-126;11111110;
所以需要強制轉換:
byte bb=(byte)130; //補碼
sout(bb)== -126;//補碼存在100000010
但是如果用2個位元組表示,那麼就是一個正數0000 0000 10000010 ,求得原碼是:130;
java >127的時候,不能再以正數表示了,是有符號的。
給底層發資料,並不關心我們的正負,收到的就是:100000010
0111 1111(2) ==7F(16),大於 7F 的,都變成負的了。80(16)==-128(10)==1000 0000(2)