[計算機概論] overflow
以二補數這個定義負數的方式為例,若長度只有 3 bits 的話,能表示的整數數字範圍只有 -4 ~ 3,對照表如下:
bits | 代表的十進位正負數 |
---|---|
011 | 3 |
010 | 2 |
001 | 1 |
000 | 0 |
111 | -1 |
110 | -2 |
101 | -3 |
100 | -4 |
overflow 會發生在「數字超出 -4 ~ 3 此範圍」的時候。在之前「定義負數」這篇文章中,介紹過,二補數這個定義負數的方式,加法依然可以使用原本二進位的加法。但如果加起來的值超出 -4 ~ 3,例如 2 + 3 根據定義即為 010 + 011 = 101,101 根據定義,代表的數字是 -3。「2 + 3 = -3」這個結果,就是 overflow
又或者, -3 + (-4),根據定義即為 101 + 100 = 1001,因為只有 3 bit 的空間,所以只剩下最後三個 bits 001 ,根據定義, 001 代表的數字是 1。產生「-3 + (-4) = 1」的現象
我之前寫 picoCTF 的 General Skills 題目時,有一題是 flag shop,看了別人的解答也不太明白發生了什麼事。今天終於知道了!
參考資料
台大開放式課程 于天立教授的計算機概論單元 2
Comments
Post a Comment