Для обнуления определённых бит в 16-битном числе можно использовать побитовую операцию И (AND) с маской, в которой все биты, которые нужно обнулить, установлены в 0, а все остальные биты — в 1.
Пронумеруем биты справа налево, начиная с 0. Таким образом, бит с номером 0 — это самый младший (правый) бит, а бит с номером 15 — самый старший (левый).
Для группы битов {2, 6, 5}:
- Биты, которые нужно обнулить: 2, 5, 6.
- Бинарное представление 16-битного числа, где биты 2, 5, 6 равны 0, а все остальные равны 1, выглядит следующим образом:
- Биты, которые нужно обнулить, ставим в 0:
..0..000..0..0..
- Переводим это в двоичное число:
1111 1001 1011 1100
(F9BC в шестнадцатеричной системе).
Маска для обнуления: 0xF9BC
Логическая операция: result = original & 0xF9BC
Для группы битов {9, 4, 7}:
- Биты, которые нужно обнулить: 4, 7, 9.
- Бинарное представление 16-битного числа, где биты 4, 7, 9 равны 0, а все остальные равны 1, выглядит следующим образом:
- Биты, которые нужно обнулить, ставим в 0:
..0..0..010..0..
- Переводим это в двоичное число:
1111 0110 1110 1111
(F6EF в шестнадцатеричной системе).
Маска для обнуления: 0xF6EF
Логическая операция: result = original & 0xF6EF
Таким образом, для обнуления указанных групп битов в 16-битном числе, используйте соответствующие маски с операцией И. Это позволит "пропустить" через маску все биты, кроме указанных, которые будут обнулены.