БуферДвоичныхДанных.ЗаписатьПобитовоеИ

Методы · WriteBitwiseAnd

Объединить заданное количество байтов, начиная с заданной позиции с байтами из заданного буфера с использованием побитового И. Если количество байтов не указано, то объединяются все байты до конца буфера.

Синтаксис

ЗаписатьПобитовоеИ(<Позиция>, <Буфер>, <Количество>)
Полное описание, параметры и ограничения

БуферДвоичныхДанных.ЗаписатьПобитовоеИ (BinaryDataBuffer.WriteBitwiseAnd)

БуферДвоичныхДанных (BinaryDataBuffer)

ЗаписатьПобитовоеИ (WriteBitwiseAnd)

Доступен, начиная с версии 8.3.10.

Синтаксис:
ЗаписатьПобитовоеИ(<Позиция>, <Буфер>, <Количество>)
Параметры:

<Позиция> (обязательный)
Тип: Число.
Начальная позиция в буфере.

<Буфер> (обязательный)
Тип: БуферДвоичныхДанных.
Буфер, с которым выполняется объединение.

<Количество> (необязательный)
Тип: Число.
Количество байтов, которые требуется объединить.
Значение по умолчанию: Неопределено.
Описание:

Объединить заданное количество байтов, начиная с заданной позиции с байтами из заданного буфера с использованием побитового И. Если количество байтов не указано, то объединяются все байты до конца буфера.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

Использование в версии:

Доступен, начиная с версии 8.3.10.

Методическая информация

Практические примеры

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

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

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

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

Подготовка

  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С» и не аффилирован с ней.