Побитовые операции изменяют выбранные биты, а не арифметическое значение обычным сложением. Учимся читать маски на одном байте.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Можно выполнить на сервере. Каждая операция применяется к буферу длиной один байт.
Первый байт 202 в двоичном виде 11001010; маска 15 — 00001111.
Флаги = Новый БуферДвоичныхДанных(1);
Флаги.Установить(0, 202);
Маска = Новый БуферДвоичныхДанных(1);
Маска.Установить(0, 15);
Флаги.ЗаписатьПобитовоеИ(0, Маска);
Сообщить(Флаги.Получить(0));
Маска.Установить(0, 1);
Флаги.ЗаписатьПобитовоеИли(0, Маска);
Сообщить(Флаги.Получить(0));
Маска.Установить(0, 8);
Флаги.ЗаписатьПобитовоеИНе(0, Маска);
Сообщить(Флаги.Получить(0));
Маска.Установить(0, 3);
Флаги.ЗаписатьПобитовоеИсключительноеИли(0, Маска);
Сообщить(Флаги.Получить(0));
Флаги.Инвертировать(0, 1);
Сообщить(Флаги.Получить(0));Разбор по шагам
И с маской 15 оставляет только младшие четыре бита: 00001010.
Или с 1 устанавливает младший бит: 00001011.
ИНе с 8 очищает бит 00001000, остаётся 00000011.
ИсключительноеИли с 3 переключает оба оставшихся бита, а Инвертировать меняет все нули на единицы.
Как проверить результат
Последовательность вывода: 10, 11, 3, 0, 255.
Повторная Инвертировать(0, 1) вернёт 0; двойная инверсия восстанавливает исходное состояние перед первой инверсией.
Ожидаемый результат
Разные операции над флагами показаны на точных числовых результатах.
На что обратить внимание
Операции меняют принимающий буфер; создавайте копию, если исходный байт нужно сохранить.
Маска ИНе очищает указанные биты, ИсключительноеИли переключает их; эти операции не взаимозаменяемы.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.