我想使用右移操作执行数字除以60,这不是2的幂。我该怎么做?
如果我想要num / 64,我可以从num >> 6
64 = 2^6
我怎么做60?
答案 0 :(得分:1)
这应该有效:
public static final long divisionUsingShift(int x, int y) {
int a, b, q, counter;
q = 0;
if (y != 0) {
while (x >= y) {
a = x >> 1;
b = y;
counter = 1;
while (a >= b) {
b <<= 1;
counter <<= 1;
}
x -= b;
q += counter;
}
}
return q;
}