В предыдущей статье мы научились проверять установлен ли тот или иной бит в числе. В этой статье мы научимся устанавливать и снимать определённые биты.
Установка бита
Установка бита производится при помощи операции «побитового «ИЛИ»
Ниже приведён пример установки четвёртого бита в числе (source).
1 2 3 |
int source = 0b000101010111; int installBitNumber = 3; int resultInstall = (source | (1 << installBitNumber)); |
Переменная installBitNumber определяет номер нужного бита (нумерация битов начинается с 0). А, операция 1 << installBitNumber генерирует так называмую «маску» — число в котором равны 0 все биты, кроме того, что нам требуется установить.
Снятие бита
Для снятия бита используется операция «побитового «И». Только в отличие от проверки бита при его снятии «маску» необходимо поразрядно инвертировать, то есть единственный бит равный 1 должен стать равен 0, а остальные биты, изначально равные 0, должны стать равными 1.
Ниже приведён пример снятия третьего бита.
1 2 3 |
int source = 0b000101010111; int uninstallBitNumber = 2; int result = (source & (~(1<<testingBitNumber))); |
Как мы видим по сравнению с примером из предыдущей статьи перед «маской» появился оператор «~», который, собственно, и осуществляет её поразрядную инверсию.
При помощи вышеописанных операций можно установит или снять любой бит в двоичном числе.
Добавить комментарий