使用6-bit
二進制補碼算術,在任何這些情況下是否發生溢出?我相信有問題b
,但沒有溢出。在這些情況中是否發生溢出?
(a) 11001 + 01000
(b) 10111 – 00110
(c) 00111 + 01100
(d) 10110 + 00011
我之所以說b
是隨身攜帶的一個例子,而不是溢出,因爲結果是所添加的兩個數字的符號相同,即使是有進位。
使用6-bit
二進制補碼算術,在任何這些情況下是否發生溢出?我相信有問題b
,但沒有溢出。在這些情況中是否發生溢出?
(a) 11001 + 01000
(b) 10111 – 00110
(c) 00111 + 01100
(d) 10110 + 00011
我之所以說b
是隨身攜帶的一個例子,而不是溢出,因爲結果是所添加的兩個數字的符號相同,即使是有進位。
另外,結果可能會比使用的字長大小爲 的可以保存的結果大。這種情況叫做溢出。
在我們的例子中,我們使用的是6位算術,所以我們可以將-32(100000
)以上的數字表示爲+ 31(011111
)。
如果在二進制補碼中加上兩個數字,一個是正數,另一個是負數,則永遠不會有溢出。結果將是操作數範圍內的一個數字。
所以要根據你的書,我們有溢出規則,頁314
。如果添加了兩個數字,它們都爲正或負,則發生溢出當且僅當結果有相反的跡象。
讓我們看到所有的項目:頁面上
(a) carry-out but no overflow
111001 -7
+ 001000 +8
------ --
1000001 +1
(b) carry-out but no overflow
110111 -9
+ 111000 -6
------ ---
1101111 -17
在這裏,我們不得不先用減法規則,315
要減去一個數(減數)與另一個(被減數)相減,取減數的二進制補碼(否定)並將其加到被減數中。
(c) no carry-out, no overflow
000111 +7
+ 001100 +12
------ ---
010011 +19
(d) no carry-out, no overflow
110110 -10
+ 000011 +3
------ ---
111001 -7
需要注意的是,在(a)
和(b)
,有進位超越了字,其中被忽略的結束。
這正是我的想法。問題必須有錯誤。我想我們應該使用五位而不是六位 – FutureSci
你的意思是5位或6位算術?因爲你在問題中說'6位',但是你的例子是5位使它們全部爲正數 – GabrielOshiro
我的意思是6.當你想增加二進制補碼的位長時,你將符號位移到最左邊的位置並填寫帶有符號位的副本。對於正數,填寫零,對於負數填寫。這稱爲符號擴展。標誌不會改變。 – FutureSci
如果您從xxx11x的任意數字中減去00110時發現了一個進位位,則可能是錯誤的。 –