Перейти к основному содержимому
Перейти к основному содержимому

Битовые функции

Битовые функции работают с любыми парами типов UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32 или Float64. Некоторые функции поддерживают типы String и FixedString.

Тип результата — это целое число с битами, равными максимальному количеству битов его аргументов. Если хотя бы один из аргументов знаковый, результат будет знаковым числом. Если аргумент — это число с плавающей запятой, оно приводится к Int64.

bitAnd(a, b)

bitOr(a, b)

bitXor(a, b)

bitNot(a)

bitShiftLeft(a, b)

Сдвигает двоичное представление значения влево на указанное количество битовых позиций.

FixedString или String рассматриваются как одно многобайтовое значение.

Биты значения FixedString теряются при сдвиге. Напротив, значение String расширяется дополнительными байтами, поэтому биты не теряются.

Синтаксис

Аргументы

Возвращаемое значение

  • Сдвинутое значение.

Тип возвращаемого значения такой же, как и тип входного значения.

Пример

В следующих запросах используются функции bin и hex для отображения битов сдвинутых значений.

Результат:

bitShiftRight(a, b)

Сдвигает двоичное представление значения вправо на указанное количество битовых позиций.

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

Синтаксис

Аргументы

Возвращаемое значение

  • Сдвинутое значение.

Тип возвращаемого значения такой же, как и тип входного значения.

Пример

Запрос:

Результат:

bitRotateLeft(a, b)

bitRotateRight(a, b)

bitSlice(s, offset, length)

Возвращает подстроку, начиная с бита с индекса 'offset', которая имеет длину 'length' битов. Индексация битов начинается с 1.

Синтаксис

Аргументы

  • s — s является String или FixedString.
  • offset — Начальный индекс с битом, положительное значение указывает на смещение влево, а отрицательное значение — это отступ вправо. Нумерация битов начинается с 1.
  • length — Длина подстроки с битом. Если вы укажете отрицательное значение, функция вернет открытую подстроку [offset, array_length - length]. Если вы пропустите значение, функция вернет подстроку [offset, the_end_string]. Если длина превышает s, она будет усечена. Если длина не кратна 8, будет добавлено 0 справа.

Возвращаемое значение

Пример

Запрос:

Результат:

byteSlice(s, offset, length)

Смотрите функцию substring.

bitTest

Принимает любое целое число и преобразует его в двоичную форму, возвращает значение бита на указанной позиции. Нумерация справа налево, начиная с 0.

Синтаксис

Аргументы

  • number – Целое число.
  • index – Позиция бита.

Возвращаемое значение

  • Значение бита на указанной позиции. UInt8.

Пример

Например, число 43 в двоичной системе счисления — это 101011.

Запрос:

Результат:

Другой пример:

Запрос:

Результат:

bitTestAll

Возвращает результат логического сложения (оператор AND) всех битов в заданных позициях. Нумерация справа налево, начиная с 0.

Сложение для побитовых операций:

0 AND 0 = 0

0 AND 1 = 0

1 AND 0 = 0

1 AND 1 = 1

Синтаксис

Аргументы

  • number – Целое число.
  • index1, index2, index3, index4 – Позиции битов. Например, для набора позиций (index1, index2, index3, index4) истинно, если и только если все его позиции истинны (index1index2, ⋀ index3index4).

Возвращаемое значение

  • Результат логического сложения. UInt8.

Пример

Например, число 43 в двоичной системе счисления — это 101011.

Запрос:

Результат:

Другой пример:

Запрос:

Результат:

bitTestAny

Возвращает результат логического сложения (оператор OR) всех битов на заданных позициях. Нумерация справа налево, начиная с 0.

Сложение для побитовых операций:

0 OR 0 = 0

0 OR 1 = 1

1 OR 0 = 1

1 OR 1 = 1

Синтаксис

Аргументы

  • number – Целое число.
  • index1, index2, index3, index4 – Позиции битов.

Возвращаемое значение

  • Результат логического сложения. UInt8.

Пример

Например, число 43 в двоичной системе счисления — это 101011.

Запрос:

Результат:

Другой пример:

Запрос:

Результат:

bitCount

Вызывает количество бит, установленных в единицу в двоичном представлении числа.

Синтаксис

Аргументы

Возвращаемое значение

  • Количество бит, установленных в единицу в входном числе. UInt8.
примечание

Функция не преобразует входное значение в более крупный тип (расширение знаков). Поэтому, например, bitCount(toUInt8(-1)) = 8.

Пример

Например, число 333. Его двоичное представление: 0000000101001101.

Запрос:

Результат:

bitHammingDistance

Возвращает Расстояние Хэмминга между двоичными представлениями двух целых значений. Может использоваться с функциями SimHash для обнаружения полудублирующихся строк. Чем меньше расстояние, тем больше вероятность, что строки одинаковые.

Синтаксис

Аргументы

  • int1 — Первое целое значение. Int64.
  • int2 — Второе целое значение. Int64.

Возвращаемое значение

  • Расстояние Хэмминга. UInt8.

Примеры

Запрос:

Результат:

С SimHash:

Результат: