正常乘法的不动点乘法

时间:2015-06-21 00:46:23

标签: math floating-point fixed-point

我需要将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格式结果.Is这对吗?

1 个答案:

答案 0 :(得分:2)

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

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

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

浮点通过允许分配给小数点左侧和右侧的位数灵活,进一步扩展了该概念。在浮点数中,每个数字都表示为一个整数"有效数字" (或尾数)到指定的功率(例如,2的幂)。该表示允许在更大的动态范围内保持相同数量的有效数字(对于非常小或非常大的数量)。对于浮点,大多数比特将被分配给尾数的有效数字,并且分配给功率数字的比特越少。浮点计算比定点更昂贵(时间),这就是固定点在微控制器和嵌入式系统中仍然流行的原因。

如果我没有回答你的问题,请详细说明,我会编辑这个答案,以包含你想要的信息。