閱讀:0
作者:嚴長生
原碼、反碼、補碼:有符號數的三種表示形式
有符號二進制數的表示方式有三種,分別是原碼、反碼和補碼。在這三種表示方式中,正數的寫法是一樣的,不同的只是負數。
上節我們分析了 +108 的有符號二進制數的表示形式:
所謂“原碼”,就是它本來的、不加修改的表示形式。
一個數字的反碼的反碼就是它的原碼。
上節我們分析了 +108 的有符號二進制數的表示形式:
(+108)10 = (01101100)2
這也是 +108 在原碼、反碼和補碼中的表示形式。換言之,正數在原碼、反碼和補碼中的表示形式是一樣的。原碼
在原碼中,二進制的最高位用來表示符號,剩余的較低位用來表示數字的大小,這相當于在無符號二進制數的最左邊添加了一個符號位。所謂“原碼”,就是它本來的、不加修改的表示形式。
例子
以十進制負數 -108 為例,它的數字大小是 108。我們知道,108 的無符號二進制形式為 1101100,共有 7 位,它們都用來表示數字的大小。由于給定的是負數,所以最左邊的符號位為 1。將它們合并起來就得到了 -108 的原碼。(−108)10 = (11101100)2
最終,−108 的原碼為 11101100。反碼
正數的反碼和原碼相同,負數的反碼是將原碼中除符號位以外的所有位取反。每一個二進制位都只有 0 和 1 兩個數碼,0 取反的結果為 1,1取反的結果為 0。一個數字的反碼的反碼就是它的原碼。
例子
以十進制負數 -108 為例,我們知道它的原碼為 11101100,將符號位以外的所有位取反得到:
原碼:(−108)10 = (11101100)2
反碼:(−108)10 = (10010011)2
補碼
正數的補碼和原碼相同,負數的補碼是將反碼加 1。一個數字的補碼的補碼就是它的原碼。例子
以十進制負數 -108 為例,我們知道它的反碼是 100100011,加 1 后得到:
原碼:(−108)10 = (11101100)2
反碼:(−108)10 = (10010011)2
補碼:(−108)10 = (10010100)2
總結
- 原碼就是將數字轉換成二進制以后并考慮了符號的結果。
- 反碼就是將原碼的數值部分取反的結果。
- 補碼就是在反碼的基礎上打了一個“補丁”,對反碼進行了“加一”修正。