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 的補碼的概念。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP