BITAND, BITLSHIFT, BITOR, BITRSHIFT, BITXOR
BITAND
Возвращает побитовое «И» двух чисел. Возвращаемое значение – одно целочисленное значение.
Числа округляются по принципу 99.4 -> 99, 99.5 -> 100.
Синтаксис
BITAND ( <Number1>, <Number2> )
где
<Number1>
(обязательный атрибут) – первое число или ссылка на столбец;<Number2>
(обязательный атрибут) – второе число или ссылка на столбец.
Пример
Bitwise AND Example =
BITAND(Table[Column1], Table[Column2])
Данная мера вычисляет побитовое "И" между двумя значениями из столбцов Column1
и Column2
таблицы Table
. Она возвращает целое число, которое является результатом побитовой операции.
BITLSHIFT
Возвращает число, сдвинутое влево на указанное количество бит. Возвращаемое значение - одно целочисленное значение.
Числа округляются по принципу 99.4 -> 99, 99.5 -> 100.
Если
Shift_Amount
отрицательное значение, оно сместится в противоположном направлении. На практике следующие выражения возвращают тот же результат:BITLSHIFT ( A, B ) BITRSHIFT ( A, -B )
Если абсолютное значение Shift_Amount больше 64, вместо ошибки будет переполнение/недополнение. Ограничений на число нет, но результат может переполниться/не дополниться.
Если при проходе по nullable колонке значение сдвига будет
null
, то оно заменится на0
.
Синтаксис
BITLSHIFT ( <Number>, <ShiftAmount> )
где
<Number>
(обязательный атрибут) – любое выражение, представляющее целое число.<ShiftAmount>
(обязательный атрибут) – любое выражение, которое представляет целое число как количество битов, на которое необходим сдвиг.
Пример
Shifted Sales = BITLSHIFT(SUM(Sales[TotalSales]), 2)
Данная мера выполняет побитовый сдвиг влево значения общей суммы продаж на 2 бита. Это может быть полезно в специфических сценариях, где требуется манипуляция двоичным представлением чисел. Сдвиг влево на 2 бита эквивалентно умножению на 4, так как каждый сдвиг влево на один бит удваивает значение.
BITRSHIFT
Возвращает число, сдвинутое вправо на указанное количество бит. Возвращается одно целочисленное значение.
Числа округляются по принципу 99.4 -> 99, 99.5 -> 100.
Если
Shift_Amount
отрицательное значение, оно сместится в противоположном направлении. На практике следующие выражения возвращают тот же результат:BITRSHIFT ( A, B ) BITLSHIFT ( A, -B )
Если абсолютное значение
Shift_Amount
больше 64, вместо ошибки будет переполнение/недополнение. Ограничений на число нет, но результат может переполниться/недополниться.Если при проходе по nullable колонке значение сдвига будет null, то оно заменится на 0.
Синтаксис
BITRSHIFT ( <Number>, <ShiftAmount> )
где
<Number>
(обязательный атрибут) – любое выражение, представляющее целое число.<ShiftAmount>
(обязательный атрибут) – любое выражение, которое представляет целое число как количество битов, на которое необходим сдвиг.
Пример
ShiftedValue := BITRSHIFT(SUM('Table'[NumericColumn]), 2)
Данная мера выполняет побитовый сдвиг вправо на 2 бита для значения, переданного в качестве аргумента. Это может быть полезно, например, для оптимизации хранения данных или выполнения специфических битовых операций.
BITOR
Возвращает побитовое «ИЛИ» двух чисел. Возвращаемое значение – одно целочисленное значение.
Синтаксис
BITOR ( <Number1>, <Number2> )
где
<Number1>
(обязательный атрибут) – первое число или ссылка на столбец.<Number2>
(обязательный атрибут) – второе число или ссылка на столбец.
Пример
Данная мера выполняет операцию побитового “ИЛИ” (BITOR
) над двумя суммами значений столбцов Flags1
и Flags2
, взятыми из таблицы Table
. Эта мера может быть использована для агрегирования состояний, представленных битами, и определения комбинированного состояния.
BITXOR
Возвращает побитовое «Исключающее ИЛИ» двух чисел. Возвращается одно целочисленное значение.
Синтаксис
BITXOR ( <Number1>, <Number2> )
где
<Number1>
(обязательный атрибут) – первое число или ссылка на столбец.<Number2>
(обязательный атрибут) – второе число или ссылка на столбец.
Пример
Данная мера вычисляет побитовое исключающее “ИЛИ” (XOR
) между двумя числовыми столбцами ColumnA
и ColumnB
в таблице MyTable
.
SUM(MyTable[ColumnA])
– суммирует все значения в столбцеColumnA
.SUM(MyTable[ColumnB])
– суммирует все значения в столбцеColumnB
.BITXOR
– применяет побитовое исключающее “ИЛИ” к результатам сумм.
Этот пример полезен, когда вам нужно использовать побитовые операции для анализа данных, например, при работе с флагами или битовыми масками.
Смотрите также