Битовое вычисление модуля - PullRequest
2 голосов
/ 15 августа 2011

Учитывая два числа a и b, где b имеет форму 2 k , где k неизвестно. Каков будет эффективный способ вычисления% b с использованием побитового оператора.

1 Ответ

4 голосов
/ 15 августа 2011

a AND (b-1) == a% b (когда b равно 2 ^ k)

ex. a = 11 (1011b), b = 4 (0100b)
11 / 4 = 2 R3
11 % 4 == 11 AND (4-1)
11 (1011b) AND 3 (0011b) == 3 (0011b)
...