Ранее я рассказывал о регистрах-масках. Но потом вдруг подумал, что не все могут знать, что такое битовая маска. Поэтому решил об этом рассказать, особенно с учетом того, что это довольно часто применяется при разработке систем управления в автоматизации производства.
Битовая маска - это некий шаблон, с которым сравнивается число. В чём то она похожа на маску в мире людей: она что-то скрывает, а что-то выделяет.
Битовые маски обычно используются тогда, когда необходимо узнать состояние одного или нескольких разрядов числа. Если вы помните советский фильм про Шерлока Холмса, то там для расшифровки текста использовалась маска: на листе бумаги были вырезаны отверстия, и при совмещении этого листа с набором букв оставались видны только нужные, и так из кучи “мусора” можно было выделить нужный смысл:
Битовая маска работает похожим образом - она выделяет из кучи битов только нужные. Представить это можно примерно так:
Похоже на кино про Шерлока Холмса, правда?
В этом примере с помощью битовой маски мы проверили состояния битов 0, 3, 6 и 7.
В языках программирования имеются необходимые команды для проверки отдельных разрядов числа. В некоторых языках имеются специальные функции для этого. Но во всех языках есть команды для поразрядного сложения, умножения и т.п., которые можно использовать для проверки отдельных разрядов числа. Пример (две картинки):
Это пример на языке ST, который я наиболее часто использую при программировании ПЛК. В комментариях всё достаточно подробно описано, так что продолжать не буду.
На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить…