Изменить отдельные флаги одного байта

Учебные задачи

Побитовые операции изменяют выбранные биты, а не арифметическое значение обычным сложением. Учимся читать маски на одном байте.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Можно выполнить на сервере. Каждая операция применяется к буферу длиной один байт.

  2. Первый байт 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));

Разбор по шагам

  1. И с маской 15 оставляет только младшие четыре бита: 00001010.

  2. Или с 1 устанавливает младший бит: 00001011.

  3. ИНе с 8 очищает бит 00001000, остаётся 00000011.

  4. ИсключительноеИли с 3 переключает оба оставшихся бита, а Инвертировать меняет все нули на единицы.

Как проверить результат

  1. Последовательность вывода: 10, 11, 3, 0, 255.

  2. Повторная Инвертировать(0, 1) вернёт 0; двойная инверсия восстанавливает исходное состояние перед первой инверсией.

Ожидаемый результат

Разные операции над флагами показаны на точных числовых результатах.

На что обратить внимание

  1. Операции меняют принимающий буфер; создавайте копию, если исходный байт нужно сохранить.

  2. Маска ИНе очищает указанные биты, ИсключительноеИли переключает их; эти операции не взаимозаменяемы.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.