1、正數的原碼、反碼、補碼是一樣的
如+1011111(95)的原碼、反碼、補碼為:
原碼 0101 1111
反碼 0101 1111
補碼 0101 1111
2、負數的原碼、反碼、補碼轉換
以-1011111(-95)的原碼、補碼、反碼的轉換為例:
(1)負數原碼、反碼轉換
符號位不變,數值位按位取反 |
原碼轉反碼
原碼 1101 1111
反碼 1010 0000 //符號位不變,數值位按位取反
反碼轉原碼
反碼 1010 0000
原碼 1101 1111 //符號位不變,數值位按位取反
(2)負數原碼、補碼轉換
符號位不變,數值位按位取反,末位+1 |
原碼轉補碼
原碼 1101 1111
反碼 1010 0000 //符號位不變,數值位按位取反
補碼 1010 0001 //末位+1
快速求法為:
符號位不變,從右往左找第一個1,這個1左邊的取反,右邊的不變 |
補碼轉原碼
補碼 1010 0001
1101 1110 //符號位不變,數值位按位取反為
原碼 1101 1111 //末位+1
(3)負數反碼、補碼轉換
反碼轉補碼,末位+1;補碼轉反碼,末位-1 |
反碼轉補碼
反碼 1010 0000
補碼 1010 0001 //末位+1
補碼轉反碼
補碼 1010 0001
反碼 1010 0000 //末位-1
3、總結:
正數的原碼、補碼、反碼都一樣;
負數的原碼、反碼轉換:符號位不變,數值位按位取反;
負數的原碼、補碼轉換:符號位不變,數值位按位取反,末位+1,【快速求法為:符號位不變,從右往左找第一個1,這個1左邊的取反,右邊的不變】;
負數的反碼、補碼轉換:反碼轉補碼,末位+1;補碼轉反碼,末位-1。