一千萬個為什麽

搜索

帶負數的定點乘法

我對一個簡單的問題感到難過。假設我在Q0.3格式中有兩個4位數。一個符號位和三個小數位。所以我可以代表$ -1 $到$ 0.875 $。

我們現在說我想做這個計算:$ -0.25 \ times 0.875 $。這是:

$$ \ frac {-2} {2 ^ 3} \ times \ frac {7} {2 ^ 3} $$

這意味著我將$ 1110 $($ -2 $)乘以$ 0111 $($ 7 $)。當然答案是使用最接近的Q0.3號碼$ -0.21875 $或$ -0.25 $。

我們來做吧。

$$ 1110 \次0111 = 01100010 $$

當被視為Q0.6號時,我的書是$ 1.100010 $,這是$ -0.46875 $。為什麽這不正確?我希望答案為1.110010美元($ -0.21875 $)。

我做錯了什麽?

最佳答案

當乘以兩個補碼數時,你必須對操作數執行符號擴展,以滿足乘法產生的位數,即在你的情況下$ 4 + 4 = 8 $位。

$$ 11111110_2 \ times 00000111_2 = 11110010_2 $$

因為有$ 2 * 3 $小數位,結果是$ 1.110010_2 = \ frac {-14} {2 ^ 6} = -0.21875 $。將此數字標準化為Q0.3格式的$ 3 $小數位會產生$ 1.110_2 = -0.25 $。

轉載註明原文: 帶負數的定點乘法