Битовая маска – определённые данные, которые используются для маскирования – выбора отдельных битов из двоичной строки. Подобное число будет означать истину или ложь, если этот бит принимает соответствующее значение (1true, 0false).

Битовая маска бывает двух видов

11111111 – однобайтовая, состоит из 8 бит, задает максимум 8 флагов (параметров).

11111111 11111111 11111111 11111111 – четырехбайтовая, состоит из 32 бит задает максимум 32 флага (параметра).

Каждый 1 бит принимает значение флага (какого-либо параметра).

Значения флагов (параметров)

Флаг8

Флаг7

Флаг6

Флаг5

Флаг4

Флаг3

Флаг2

Флаг1

27

26

25

24

23

22

21

20

128

64

32

16

8

4

2

1

Далее флаги принимают значение равное: 2 в степени N-1, где N – порядковый номер флага.

Пример постановки значений битовой маски

Необходимо задать значение true у 2 и 8 флагов.

  1. Получаем двоичное число 10000010, где 2 и 8 бит принимают значение "истина".
  2. Переводим двоичное число в десятичную систему счисления и получаем искомое значение битовой маски: 130.
Пример расшифровки битовой маски

Задано значение битовой маски: 36.

Чтобы посмотреть, какие флаги активны, переведем число 36 в двоичную систему счисления:

36/2=18   остаток 0
18/2=9     остаток 0
9/2=4       остаток 1
4/2=2       остаток 0
2/2=1       остаток 0
1/2=0       остаток 1

3610 = 001001002

Значение true установлено у флагов 3, 6.

4(флаг3)+32(флаг 6)=36

Битовая маска используется для установки значений некоторых полей базы данных кассы, в объектах шаблонов документов.

Пример установки значений свойств товара при помощи битовой маски

В базе данных поле op_mode задается при помощи битовой маски.

op_modeint(11)

Свойства товара:

  • 1 – запретить продажу товара;
  • 2 – запретить возврат товара;
  • 4 – не показывать товар в списках;
  • 8 – запретить возврат товара в чеке продажи;
  • 16 – товар требует визуального контроля;
  • 32 – товар ограничен в продаже по возрасту;
  • 64 – товар ограничен в продаже по времени;
  • 128 – товар с признаком "алкогольный", требует регистрации в ЕГАИС;
  • 256 – товар с установленным признаком "расфасованный", на такой товар не применяется скидка на набор;
  • 512 – алкогольный товар без акцизной марки, не требующий проверку в ЕГАИС;
  • 1024 – алкогольный набор;
  • 2048 – товар по свободной цене;
  • 4096 – меховое изделие;
  • 8192 – товар без контроля веса;
  • 16384 – легкий товар;
  • 32768 – табачная продукция;
  • 65536 – обувной товар;
  • 131072 – товар с неточным контрольным весом.

Чтобы задать товару свойства: запретить возврат товара и запретить возврат товара в чеке продажи, необходимо установить значение битовой маски равное 10(8+2).

  • No labels