一補碼與二補碼
補碼用於數字計算機中,以簡化減法運算和邏輯運算。對於二進位制(基數-2)系統,有兩種補碼:一補碼和二補碼。
二進位制數的一補碼
將二進位制數轉換為一補碼有一個簡單的演算法。要獲得二進位制數的一補碼,只需反轉給定數字。
二進位制數的二補碼
將二進位制數轉換為二補碼有一個簡單的演算法。要獲得二進位制數的二補碼,只需反轉給定數字,然後在結果的最低有效位 (LSB) 加 1。
一補碼和二補碼的區別
這些區別如下所示:
| 一補碼 | 二補碼 |
|---|---|
| 要獲得二進位制數的一補碼,只需反轉給定數字。 | 要獲得二進位制數的二補碼,只需反轉給定數字,然後在結果的最低有效位 (LSB) 加 1。 |
| 二進位制數 110010 的一補碼是 001101 | 二進位制數 110010 的二補碼是 001110 |
| 簡單的實現,每個輸入位只使用非門。 | 每個輸入位使用非門和全加器。 |
| 可用於有符號二進位制數表示,但不適合作為 0 的模糊表示。 | 可用於有符號二進位制數表示,最適合作為所有數字的明確表示。 |
| 0 有兩種不同的表示,一個是 -0(例如,在五位暫存器中為 1 1111),另一個是 +0(例如,在五位暫存器中為 0 0000)。 | 0 只有一個表示,用於 -0 和 +0(例如,在五位暫存器中為 0 0000)。零 (0) 始終被認為是正數(符號位為 0)。 |
| 對於 k 位暫存器,可以儲存的最大正數是 (2(k-1)-1),可以儲存的最小負數是 -(2(k-1)-1)。 | 對於 k 位暫存器,可以儲存的最大正數是 (2(k-1)-1),可以儲存的最小負數是 -(2(k-1))。 |
| 在一補碼算術運算中會發生首位進位加法。它加到結果的最低有效位。 | 在二補碼算術運算中不會發生首位進位加法。它被忽略。 |
| 由於需要進行首位進位加法,一補碼算術運算並不比二補碼更容易。 | 由於不需要進行首位進位加法,二補碼算術運算比一補碼更容易。 |
| 符號擴充套件用於將有符號整數從一種大小轉換為另一種大小。 | 符號擴充套件用於將有符號整數從一種大小轉換為另一種大小。 |
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP