[計算機概論] 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,看了別人的解答也不太明白發生了什麼事。今天終於知道了!

參考資料

Comments

Popular posts from this blog

Alpha Camp 全端開發課程學習心得

在 javascript 用 regular expression 為金額加上千位數分隔符號

shop_platform - sqlalchemy.exc.TimeoutError