Рассмотрим три операции — установка нужного бита в числе, сброс бита и инверсия.
У нас есть число N и номер бита i. Номер бита нумерует биты, начиная с нуля.
Прежде всего нам понадобится маска, с помощью которой мы произведем нужную нам операцию.
1 |
const mask = 1 << i |
Это будет работать для 32-битных целых. Напоминаю, что в JS максимальная величина целого числа — 53 бита.
Установка бита
Следующая операция установит i-й бит:
1 |
N |= mask; |
Сброс бита
Следующая операция сбросит бит:
1 |
N &= ~mask; |
Переключение (инверсия) бита
Следующая операция инвертирует состояние i-го бита:
1 |
N ^= mask; |