Я хотел бы выполнить деление числа на 60, которое не является степенью двойки, используя операцию правого сдвига.Как мне это сделать?
Если я хочу num / 64, я могу сделать num >> 6, так как 64 = 2^6
num >> 6
64 = 2^6
Как мне сделать это для 60?
Это должно работать:
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; }