符號及絕對值表示法

Sign-and-Magnitude Representation

Created by Sam Li

課堂目標 (Learning Goals)

學習最直接的負數表示法:把最高位元(Most Significant Bit)當作「正負號」。透過互動,觀察這種表示法的運作方式及其帶來的限制,為接下來學習一補碼及二補碼建立基礎。

十進制 (Decimal)
範圍: -127 至 +127
8-bit 符號及絕對值表示法
符號(+/-)
 (64)
 (32)
 (16)
 (8)
 (4)
 (2)
 (1)

概念解析

規則很簡單,分成兩部分:

最左邊的位元(第 8 bit)專門用來記錄正負號:0 代表正數,1 代表負數。其餘的 7 個位元用來記錄數值的絕對值。

+5 = 0000 0101
-5 = 1000 0101 (只改第一位)

為什麼現在的電腦不用它?

雖然人類很容易看懂,但對電腦計算來說很不方便。當電腦要把兩個數字相加時,它必須先檢查符號。如果符號不同,加法就要轉換成減法處理。而且它還產生了「+0 (00000000)」和「-0 (10000000)」的問題!

常見迷思 (Common Misconception)

「我們可以直接對這兩個數字進行標準的二進制加法嗎?」

不可以! 這是初學者常犯的錯誤。如果我們嘗試把 +5 和 -5 用標準二進制加法相加,結果並不是 0:

  0000 0101 (+5)
+ 1000 0101 (-5)
-------------
  1000 1010 (= -10,答案錯誤!)

這正是為什麼電腦科學家後來發明了「補碼(Complement)」,讓減法可以直接透過加法電路完成,而不需要額外的複雜判斷。

課堂總結 (Key Takeaways)

  • 📌 直觀但低效: 把第一位當作正負號很容易閱讀,但會讓加減運算的電路設計變得很複雜。
  • 📌 引發尋找新方法的動機: 因為「雙重零」浪費了儲存空間,以及無法直接使用加法器處理減法,這引出了我們接下來要學的「補碼」系統。