Побитовая операция как их имя позволяет угадывать работу с двоичным представлением чисел. Это означает, что они будут очень эффективны для проверки делимости силой или 2, но вряд ли пригодны для любого другого случая.
Примеры:
- п делится на 2:
n & 1 == 0
- п делится на 4:
n & 3 == 0
- п делится на 8:
n & 7 == 0
Есть другие правила делимость, которые могут быть Используется: вы можете адаптировать casting out 9 or 11 для проверки делимости на 15 или 17 (базовая 16 использует до полубайта на каждый байт), но как одно целое число разделение часто быстрее, чем выполнение многих простых операций (аккумулятор непосредственно обрабатывает числа 32 или 64 бит), они редко используются ...
Если ваше требование - проверить делимость на 3 и 9, вы можете адаптировать выкидывать 9 для 3 = 4 - 1 и для 9 = 8 + 1. 81 = 0b1010001
- 3: сумма 2 битовых цифр должна быть кратна 3 - начиная с небольшими весами: 01 + 00 + 01 + 01 = 0b11 (= 3): делится
- 9: суммы нечетного 3 разрядных цифры минус сумма четных должна быть кратна 9 = 0b1001 - нечетная: 001 + 001 = 010, даже: 010 - разница составляет 0: делится
Вы можете закодировать это легко сдвиги (>>
) и двоичный код &
* Почему вы хотите реализовать его с помощью побитовой операции? –
Почему не просто '81% 3 == 0'? – jonrsharpe
Существует требование, чтобы я реализовал это с помощью побитовых операций –