2015-06-21 140 views
0

我需要将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

在小数,您定点例子其实是:

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

在二进制中,同样的事情正在做,只是用2代替的10次幂的权力(如因素/除数) 。在适当的乘法之后,定点运算发生在纯积分空间中。乘以或除以2的幂在二进制数上分别是左移或右移(对于CPU非常快)。在固定点上,小数点左边(整数)和右边(小数)的位数是固定的(预定的),这意味着某些数字不能在不失真的情况下在刻度上表示。

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

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

+0

我从你的解释中得到了我正在寻找的答案。基本上我们用二进制来模拟整数乘法。 所以2 * 4.5 = 10 * 100.1 = 2 * 9然后除以2. 除以2的原因是.1表示为2 ^( - 1) –