如何使用定点算法计算1/3?

时间:2017-09-07 19:56:34

标签: math fixed-point

我对定点运算特别是除法运算感兴趣。 然而,许多网站只使用二次幂除法来解释这种方法,即一次移位。

如果分母不是2的幂,怎么办? 我们如何计算1/3 in例如无符号16位算术? 假设右下4位是小数部分。

1是0000 0000 0001 0000

3是0000 0000 0011 0000

1 个答案:

答案 0 :(得分:2)

如果分母不是2的幂,那么结果很可能是无限系列。例如:

enter image description here

由于您只有4个小数位,因此结果为:

enter image description here

您可以通过以下方式计算:

  • 获取仅包含MSB的值:1000 0000 0000 0000
  • 除以分母
  • 右移整数位数减1 。这相当于在固定点表示中将初始值转换为1

对于上面的示例:

  • [1000 0000 0000 0000] / 3 = 0010 1010 1010 1010
  • [0010 1010 1010 1010] >> (12 - 1) = 0000 0000 0000 0101