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 – применяет побитовое исключающее “ИЛИ” к результатам сумм.

Этот пример полезен, когда вам нужно использовать побитовые операции для анализа данных, например, при работе с флагами или битовыми масками.


Смотрите также

Поддерживаемые функции DAX
Математические операторы

На этой странице


Нужна дополнительная помощь?

Свяжитесь с технической поддержкой.