正常乘法的定点乘法

fixed point multiplication for normal multiplication

我需要将 X 与浮点数相乘,因为我的处理器中没有浮点运算。我了解该方法但不知道为什么存在该方法?

假设我们想用十进制乘以 2*4.5 我执行以下操作: 2 * 4.5 (100.1) 所以我乘以 2*1001 = 2*9 = 18 然后右移 1。 所以 18>>1 = 9

是不是我们用定点表示 2,用定点表示 4.5,当我们将 Q1.1 和 Q1.1 格式相乘时,我们得到 Q2.2 格式,我们右移导致 Q1.1 格式 result.Is这样对吗?

在十进制中,您的定点示例实际上是:

2 * 4.5
2 * 45 (after multiplying by 10) = 90
90 / 10 = 9 (after dividing the 10 back out)

在二进制中,同样的事情正在做,但只是用 2 的幂而不是 10 的幂(作为因数/除数)。在适当的乘法之后,定点运算发生在纯积分 space 中。乘以或除以 2 的幂只是二进制数的左移或右移(对于 CPU 非常快)。在定点数中,小数点左边(整数)和右边(小数)的位数是固定的(预先确定的),这意味着某些数字无法在不损失精度的情况下在刻度上表示。

浮点数进一步扩展了概念,允许灵活分配给小数点左右的位数。在浮点数中,每个数字都表示为指定幂(例如,2 的幂)的整数 "significand"(或尾数)。这种表示允许在更大的动态范围内保持相同数量的有效数字(对于非常小或非常大的数量级数字)。对于浮点数,大部分位将分配给尾数的有效位,而较少的位分配给幂位。浮点计算比定点计算更昂贵(时间方面),这就是定点在微控制器和嵌入式系统中仍然很受欢迎的原因。

如果我没有回答您的问题,请详细说明,我将编辑此答案以包含您需要的信息。