在計算機系統中,數值一律用補碼來表示和存儲。原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理
以下代碼基於java
java 中數字做位運算時,都會補全32位(Short也是),如果強轉爲Long類型則會用64位。
以下以-4,4爲例 ,長度以32位爲準。
關於:原碼,反碼,補碼(有符號位)
java 輸出-4或4的補碼。
正數
4的原碼=0(28個0)100
正數的 原碼=反碼=補碼
負數
注意:轉換過程中:最高位符號位始終位置不變值也不變。
反碼=(其他位取反,即1變0,0變1)
反碼=(補碼-1)
原碼=反碼除最高位符號位 全部取反。
補碼=反碼+1;
ym=-4原碼= 1(中間28個0)100
fm=-4 反碼=1(中間28個1)011
bm=-4補碼=fm+1=1(中間28個1)100
移位運算
有符號右移 >>
負數 位運算過程:原碼-》反碼-》補碼-》移位-》反