- 原碼:正數是其二進制本身;負數是符號位為1,數值部分取X絕對值的二進制。
- 反碼:正數的反碼和原碼相同;負數是符號位為1,其它位是原碼取反。
- 補碼:正數的補碼和原碼,反碼相同;負數是符號位為1,其它位是原碼取反,未位加1。(或者說負數的補碼是其絕對值反碼未位加1)
- 移碼:將符號位取反的補碼(不區分正負)
舉個例子以一個字節8位說明:
編碼 | 10810(sbyte) | -10810(sbyte) |
---|---|---|
原碼 | 01101100 | 11101100 |
反碼 | 01101100 | 10010011 |
補碼 | 01101100 | 10010100 |
移碼 | 11101100 | 00010100 |
注:加粗的數字為符號位,補碼在線工具
移碼表示法是在數X上增加一個偏移量來定義的,常用來表示浮點數中的階碼,所以是整數。如果機器字長為n,規定偏移量為2(n-1)。若X是整數,則X移=2^(n-1)+X
例子:假設字長為8,以上面的108為例
108移=10000000+01101100=11101100
-108移=10000000+10010100=00010100