閱讀:0       作者:嚴長生

原碼、反碼、補碼:有符號數的三種表示形式

有符號二進制數的表示方式有三種,分別是原碼、反碼和補碼。在這三種表示方式中,正數的寫法是一樣的,不同的只是負數。

上節我們分析了 +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

最終,-108 的反碼為 10010011。

補碼

正數的補碼和原碼相同,負數的補碼是將反碼加 1。一個數字的補碼的補碼就是它的原碼。

例子

以十進制負數 -108 為例,我們知道它的反碼是 100100011,加 1 后得到:

原碼:(−108)10 = (11101100)2
反碼:(−108)10 = (10010011)2
補碼:(−108)10 = (10010100)2

最終,-108 的補碼為 10010100。

總結

  • 原碼就是將數字轉換成二進制以后并考慮了符號的結果。
  • 反碼就是將原碼的數值部分取反的結果。
  • 補碼就是在反碼的基礎上打了一個“補丁”,對反碼進行了“加一”修正。
黑龙江22选5开奖结果查询