二進制的小數乘除法,其實可以看作是你已經學會的「整數運算」加上「小數點定位」的組合。最關鍵的觀念是:先忽略小數點,當作整數來算,最後再把小數點點回去。
這與十進制的邏輯完全一致,但因為二進制只有 0 和 1,運算過程反而更單純。以下我為你詳細拆解原理與範例。✖️ 二進制小數乘法
1. 核心原理
- 忽略小數點:先把兩個數都當作整數。
- 整數乘法:使用「移位與加法」進行運算。
- 定位小數點:統計兩個乘數總共有多少位小數,結果就保留多少位小數。
- 公式:若 A 有 m 位小數,B 有 n 位小數,則結果有 m+n 位小數。
2. 計算範例
假設我們要計算 10.1×1.1 (對應十進制的 2.5×1.5=3.75 ):
步驟解析:
- 忽略小數點:
- 10.1 視為 101(1位小數)
- 1.1 視為 11 (1位小數)
- 預計結果的小數位數:1+1=2位。
- 執行整數乘法 (101×11 ):
1 0 1 (被乘數)
x 1 1 (乘數)
-------
1 0 1 (1 x 101)
+ 1 0 1 0 (1 x 101, 左移一位)
-------
1 1 1 1
- 點回小數點:
- 計算結果是 1111 。
- 從右邊數 2 位,點上小數點。
- 最終結果: 11.11
驗證: 二進制 11.11=2+1+0.5+0.25=3.75 。正確!
➗ 二進制小數除法
二進制除法比乘法稍複雜,主要有兩種思考方式:「移位法」(適合手算)和「長除法」(適合電腦邏輯)。
方法一:移位法(最直觀)
原理是將除數變成整數。將被除數和除數同時擴大相同的倍數(左移小數點),直到除數變成整數,然後再進行整數除法。
範例:計算 11.0÷1.1(對應十進制的 6÷3=26÷3=2 )
- 移位:將除數 1.1 的小數點向右移 1 位變成 11 (整數)。
- 同步:被除數 11.0 也要向右移 1 位,變成 110 。
- 整數除法:計算 110÷11 。
- 110 (6) 除以 11 (3) 等於 10 (2)。
方法二:長除法(電腦演算法基礎)
這與十進制的長除法步驟完全一樣:試商、乘、減、落下。
範例:計算 1010÷10 (對應十進制的 10÷2=5 )
1 0 1 <-- 商 (Quotient)
________
1 0 ) 1 0 1 0 <-- 被除數 (Dividend)
1 0 <-- 1. 試商1: 1x10=10
--
0 1 <-- 2. 相減得0,落下下一位1
0 0 <-- 3. 試商0: 0x10=0 (不夠減)
--
1 0 <-- 4. 落下下一位0,變成10
1 0 <-- 5. 試商1: 1x10=10
--
0 <-- 除盡
結果: 101101 (即十進制的 5)。
💡 電腦內部的運算邏輯
雖然我們手算時會「點小數點」,但電腦硬體(如 CPU 的 ALU)其實非常單純:
- 定點數運算 (Fixed-Point):
電腦通常使用定點數格式(如 Qm.n 格式)。它並不知道哪裡有小數點,它只是把數字當作整數在運算。 - 乘法時:CPU 算出整數結果後,軟體層面會知道「啊,因為輸入有 4 位小數,所以輸出結果的最低 4 位是小數部分」。
- 除法時:通常會先將被除數左移(擴大),算出整數商後,再透過軟體調整小數點位置。
- 符號處理:
如果是帶符號的小數(有正負之分),電腦會先記錄符號(正正得正、正負得負),然後將數字轉為絕對值(正數)進行上述的運算,最後再把符號加回去。
📊 總結

掌握「先當整數算,最後再定位」這個心法,二進制小數運算就不難了!

























