java - 2的幂时如何将除法变成按位移位?

标签 java algorithm bit-manipulation bitwise-operators

我有以下需要经常做的划分:

int index = pos / 64;

除法在 cpu 级别可能是昂贵的。我希望有一种方法可以通过按位移位来做到这一点。我还想了解如何从除法到移位,换句话说,我不想只记住按位表达式。

最佳答案

int index = pos >> 6会这样做,但这是不必要的。任何合理的编译器都会为您做这种事情。 Sun/Oracle 编译器当然会。

一般规则是 i/(2^n)可以用 i >> n 来实现.同样i*(2^n)i << n .

如果 i,您需要关注负数表示已签署。例如。二进制补码产生合理的结果(如果右移是算术 - 复制符号位)。带符号的幅度没有。

关于java - 2的幂时如何将除法变成按位移位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13784685/

相关文章:

c - 右移按位运算中出现意外输出

java - 为什么 -9 & 0xaaaa 得到一个无符号的结果?

java - 多人游戏(Java 套接字写入/读取对象)

java - 父类中的私有(private)变量

excel - VBA 使用递归而不是循环

ruby - 什么算法可用于警告异常趋势?

c++ - 计算解释为 4 字节的两个整数之间的范数

java - 您如何分析致命的 -javaagent 错误?

java - Tapestry Hook : start of rendering and end of rendering

algorithm - 积分解的数量