1的補碼錶示法


這是在計算機中表示有符號整數的方法之一。在這種方法中,最高有效位 (MSD) 具有額外的含義。

  • 如果 MSD 為 0,我們可以像解釋任何普通無符號整數一樣評估該數字。
  • 如果 MSD 為 1,則表示該數字為負數。

其他位表示數字的幅度(絕對值)。

如果數字為負數,則其他位表示數字幅度的 1 的補碼。

下面顯示了一些有符號十進位制數及其在 1 的補碼錶示法中的等效值,假設字長為 4 位。

有符號十進位制
1 的補碼
   +6
   0110
   -6
   1001
   +0
   0000
   -0
   1111
   +7
   0111
   -7
   1000

範圍

從上表可以看出,如果字長為 n 位,則可以表示的數字範圍為 -(2n-1- 1) 到 +(2n-1 -1)。下表顯示了字長和可以表示的 1 的補碼數字的範圍。

字長
1 的補碼數字範圍
4
-7 到 +7
8
-127 到 +127
16
-32767 到 +32767
32
-2147483647 到 +2147483647

示例 1

 使用計算機新增數字 (+5) 和 (-3)。假定這些數字使用 4 位 1 的補碼錶示法表示。

              1110 <- carry generated during addition

              0101 <- (+5) First Number

           +  1100 <-(-3) Second Number

              0001 <- (+1) Sum


計算機沒有給出正確的答案 +2 = 0010,而是給出了錯誤的答案 +1 = 0001!但是,為了得到正確的答案,計算機將不得不簡單地將生成的最終進位新增到結果中,如下所示。

   0001

 +    1

   0010 = (+2) Result

示例 2

使用計算機新增數字 (-4) 和 (+2)。假定這些數字使用 4 位 1 的補碼錶示法表示。

              0010 <- carry generated during addition

              1011 <- (-4) First Number

           +  0010 <-(+2) Second Number

              1101 <- (-2) Sum


新增最終陣列後,結果保持為 1101。這是 -2,這是正確答案。在 1 101 中,MSB 為 1。這意味著該數字為負數。然後,其餘位不會直接提供幅度。要解決此問題,只需考慮 1 101 的 1 的補碼。1 101 的 1 的補碼為 0 010,即 +2。因此,1 101(0 010 的 1 的補碼)為 -2。

缺點

  • 1 的補碼錶示法不太容易理解,因為它與表示有符號數字的傳統方式大不相同。

  • 另一個缺點是 0 有兩種表示法(0000 和 1111),當計算機想要測試 0 結果時,這非常不方便。

優點

  • 對於計算機來說,執行算術運算非常方便。為了在加法後得到正確的答案,必須將加法結果和最終進位加起來。

因此,1 的補碼錶示法通常也不用於在計算機內部表示有符號數字,因此出現了 2 的補碼的概念。

更新於: 2020年6月27日

5K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.