带负数的定点乘法

信息处理 固定点
2021-12-27 20:07:08

我被一个简单的问题难住了。假设我有两个 Q0.3 格式的 4 位数字。一个符号位和三个小数位。所以我可以代表1通过到0.875.

现在假设我希望进行此计算:0.25×0.875. 这是:

223×723

这意味着我正在成倍增加1110(2) 经过0111(7)。答案当然是0.21875要么0.25使用最接近的 Q0.3 数字。

让我们开始工作吧。

1110×0111=01100010

当被视为 Q0.6 数字时1.100010,即0.46875通过我的书。为什么这是不正确的?我期待一个答案1.110010(0.21875)。

我做错了什么?

1个回答

当乘以二进制补码时,您必须对操作数执行符号扩展以满足您的乘法将产生的位数,即在您的情况下4+4=8位数。

111111102×000001112=111100102

因为有23小数位,结果是1.1100102=1426=0.21875. 将此数字标准化为3Q0.3 格式的小数位产生1.1102=0.25.