一補碼與二補碼


補碼用於數字計算機中,以簡化減法運算和邏輯運算。對於二進位制(基數-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))。
在一補碼算術運算中會發生首位進位加法。它加到結果的最低有效位。
在二補碼算術運算中不會發生首位進位加法。它被忽略。
由於需要進行首位進位加法,一補碼算術運算並不比二補碼更容易。
由於不需要進行首位進位加法,二補碼算術運算比一補碼更容易。
符號擴充套件用於將有符號整數從一種大小轉換為另一種大小。
符號擴充套件用於將有符號整數從一種大小轉換為另一種大小。

更新於:2020年6月30日

33K+ 次瀏覽

開啟您的職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.