我们如何使用定点运算来计算 1/3?

How can we calculate 1/3 by using fixed-point arithmetic?

我对定点运算特别是除法运算很感兴趣。 然而,许多站点解释了仅使用二次幂除法(即位移)的方法。

如果分母不是二次方怎么办? 例如,我们如何计算无符号 16 位算术中的 1/3? 假设右4位是小数部分

1 是 0000 0000 0001 0000

3 是 0000 0000 0011 0000

如果分母不是 2 的幂,则结果很可能是 无限级数。例如:

因为你只有 4 个小数位,结果将是:

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

  • 取一个只有 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