簡體   English   中英

如何檢測溢出標志?

[英]How to detect overflow flag?

在下面的問題中,我想知道為什么OVERFLOW標志設置為1。我知道只有在將兩個數字加相同符號並得到不同符號時才會發生溢出。 這是本書解決方案中的錯誤嗎?

在此處輸入圖片說明

這些看起來像8位無符號數字。 結果是9位,這會使8位寄存器溢出(最近很難找到)。 如果這些是帶符號的數字,則它們實際上將具有不同的符號(-1和1)。 但是,該圖像顯示了一個九位的總和,而不僅僅是0(甚至是00000000)。 因此,這些是無符號的8位,或者“書”中存在錯誤。 注意半進位被設置。 這表明正在使用16位寄存器的1/2。 這種情況一直在發生。

關於符號不同的說法使溢出不可能發生-只是重申了簡單的關系,即將2個相同位大小的數字相加,其中一個為正,另一個為負。 最大的8位正數是127。最大的8位負數是-128。 進行數學運算相對容易。 從127開始,並添加每個可能的負數... 127 + -1 = 126,127 + -2 = 125,127 + -3 = 124,... 127 + -126 = 1,127 + -127 = 0 ,127 + -128 = -1。 總和都不大於127或小於-128,因此不會發生溢出。 您可以通過將每個正數加到-128來完成證明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM