如何使用按位运算符实现除法(不仅仅是除以 2 的幂)?

详细描述一下。

最佳答案

进行除法的标准方法是实现二进制长除法。这涉及减法,所以只要您不认为这不是按位运算,那么这就是您应该做的。 (请注意,您当然可以使用按位逻辑运算非常繁琐地实现减法。)

本质上,如果你在做 Q = N/D :

  • 对齐 ND 中最重要的那些。
  • 计算 t = (N - D);
  • 如果是 (t >= 0) ,则将 Q 的最低有效位设置为 1,并设置 N = t
  • 左移 N 1。
  • 左移 Q 1。
  • 转到步骤 2。

  • 根据需要循环尽可能多的输出位(包括小数),然后应用最终移位以撤消您在步骤 1 中所做的操作。

    关于bit-manipulation - 使用按位运算符实现除法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5284898/

    10-15 16:29