Math 正规乘法的定点乘法

Math 正规乘法的定点乘法,math,floating-point,fixed-point,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格式的结果。对吗?用十进制表示,你的定点示例实际上是: 2 * 4.5 2 * 45 (after multiplyi

我需要用浮点中的一个浮点数乘以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格式的结果。对吗?

用十进制表示,你的定点示例实际上是:

2 * 4.5
2 * 45 (after multiplying by 10) = 90
90 / 10 = 9 (after dividing the 10 back out)
在二进制中,同样的操作也在进行,但只是使用2的幂而不是10的幂(作为因子/除数)。经过适当的乘法运算后,不动点运算发生在纯积分空间中。与2的幂相乘或相除只是二进制数的左移或右移(对于CPU来说非常快)。在定点法中,小数点左边(整数)和右边(小数)的位数是固定的(预先确定的),这意味着某些数字不能在刻度上表示而不损失精度

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


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

我从您的解释中得到了我想要的答案。基本上,我们模拟的是二进制的整数乘法。所以2*4.5=10*100.1=2*9,然后除以2。被2除的原因是.1表示为2^(-1)