1. 程式人生 > >原碼,反碼,補碼, 2進位制,16進位制,byte位元組,雙位元組

原碼,反碼,補碼, 2進位制,16進位制,byte位元組,雙位元組

計算機都以 補碼形式存在:

1.正數的原碼、反碼、補碼都一樣

負數的補碼==原碼(除符號位) 按位取反再+1;原碼==補碼(除符號位)按位取反再+1;

十進位制 原碼 反碼 補碼
85
0101 0101
0101 0101
0101 0101
-85
1101 0101
1010 1010
1010 1011

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)