有符號 2 的補碼減法

有符號 2 的補碼減法

考慮我們使用 3 位元二進位補碼數,並且我們將執行減法運算。被減數是+3,減數是-4。我們應該得到減數的 2 補碼並將其與被減數相加。 +3=011 -4=100--->它的二進位補碼又是100,現在我們將它們相加並得到111,這是不正確的。因為我們應該得到 3-(-4)=+7 但結果是負數!你如何分析溢出?為什麼結果是錯的?

答案1

如果您使用最左邊的位元來指示符號,則不能使用整個 3 位數字。100要嘛是(正,無符號)4,要嘛實際上是(負)0。

如果您的數字為“-4”,那麼它實際上必須是1100,而不僅僅是100。然後,您可以使用所擁有的信息,知道您有一個 3 位數字,並且其中一個數字為負數。

我的意思是你得到的價值7.111對於 3 位元無符號數,剛好是 7。

如果您使用 3 位元補碼函數,您只是沒有考慮到第一位數字不是符號位元。您必須先查看您的數字並丟棄與立即操作無關的信息,即符號數字。該符號告訴您需要如何處理它,但它並不是該數字值的「真實」部分。

如果您使用帶符號的 3 位數字,則根據定義,您只能執行 2 位加法和減法。

相關內容