【问题标题】:fixed point multiplication for normal multiplication正态乘法的定点乘法
【发布时间】:2015-06-21 00:46:22
【问题描述】:

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

【问题讨论】:

    标签: math floating-point fixed-point


    【解决方案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)
    猜你喜欢
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多