Побитовые функции
Побитовые функции работают для любой пары типов из UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32 или Float64. Некоторые функции поддерживают типы String и FixedString.
Тип результата — целое число с количеством бит, равным максимальному количеству бит среди его аргументов. Если хотя бы один из аргументов — знаковый, результат будет знаковым числом. Если аргумент является числом с плавающей запятой, он приводится к типу Int64.
bitAnd
Добавлено в: v1.1
Выполняет побитовую операцию AND между двумя значениями.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает результат побитовой операции a AND b
Примеры
Пример использования
bitCount
Добавлена в: v20.3
Вычисляет количество битов, установленных в 1, в двоичном представлении числа.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает количество битов, равных единице, в x. UInt8.
Функция не преобразует входное значение к типу с большей разрядностью (расширение знака).
Например: bitCount(toUInt8(-1)) = 8.
Примеры
Пример использования
bitHammingDistance
Добавлено в: v21.1
Возвращает расстояние Хэмминга между битовыми представлениями двух чисел.
Может использоваться с функциями SimHash для обнаружения частично дублирующихся строк.
Чем меньше расстояние, тем более похожи строки.
Синтаксис
Аргументы
x— первое число для вычисления расстояния Хэмминга.(U)Int*илиFloat*y— второе число для вычисления расстояния Хэмминга.(U)Int*илиFloat*
Возвращаемое значение
Возвращает расстояние Хэмминга между x и y типа UInt8
Примеры
Пример использования
bitNot
Добавлена в версии: v1.1
Выполняет побитовую операцию NOT.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает результат ~a, то есть a с инвертированными битами.
Примеры
Пример использования
bitOr
Добавлено в: v1.1
Выполняет побитовое операция OR между двумя значениями.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает результат побитовой операции a OR b
Примеры
Пример использования
bitRotateLeft
Добавлена в версии: v1.1
Выполняет циклический сдвиг битов влево на указанное количество позиций. Биты, вышедшие за левую границу, циклически переносятся вправо.
Синтаксис
Аргументы
a— значение для циклического сдвига.(U)Int8/16/32/64N— число позиций циклического сдвига влево.UInt8/16/32/64
Возвращаемое значение
Возвращает результат циклического сдвига того же типа, что и a. (U)Int8/16/32/64
Примеры
Пример использования
bitRotateRight
Добавлена в: v1.1
Циклически сдвигает биты вправо на заданное число позиций. Биты, которые выходят за пределы, появляются слева.
Синтаксис
Аргументы
a— значение для циклического сдвига.(U)Int8/16/32/64N— количество позиций, на которое выполняется циклический сдвиг вправо.UInt8/16/32/64
Возвращаемое значение
Возвращает значение после циклического сдвига того же типа, что и a. (U)Int8/16/32/64
Примеры
Пример использования
bitShiftLeft
Впервые появился в: v1.1
Выполняет сдвиг двоичного представления значения влево на заданное число битовых позиций.
FixedString или String рассматриваются как одно многобайтное значение.
Биты значения типа FixedString теряются по мере их выхода за пределы при сдвиге.
Напротив, значение типа String расширяется дополнительными байтами, поэтому биты не теряются.
Синтаксис
Аргументы
a— Значение для сдвига.(U)Int*илиStringилиFixedStringN— Количество позиций сдвига.UInt8/16/32/64
Возвращаемое значение
Возвращает сдвинутое значение с типом, совпадающим с типом a.
Примеры
Пример использования с двоичным кодированием
Пример использования в шестнадцатеричном формате
Пример использования с кодировкой FixedString
bitShiftRight
Введено в: v1.1
Сдвигает двоичное представление значения на указанное число бит вправо.
FixedString или String рассматривается как одно многобайтное значение.
Биты значения типа FixedString теряются по мере их смещения за пределы разрядной сетки.
Напротив, значение типа String дополняется дополнительными байтами, поэтому биты не теряются.
Синтаксис
Аргументы
a— Значение для сдвига.(U)Int*илиStringилиFixedStringN— Количество позиций для сдвига.UInt8/16/32/64
Возвращаемое значение
Возвращает сдвинутое значение с тем же типом, что и у a.
Примеры
Пример использования с двоичным кодированием
Пример использования шестнадцатеричного кодирования
Пример использования с кодировкой FixedString
bitSlice
Добавлено в: v22.2
Возвращает подстроку бит длиной 'length' бит, начиная с бита с индексом 'offset'.
Синтаксис
Аргументы
-
s— Строка или фиксированная строка, из которой выполняется извлечение.StringилиFixedString -
offset— Начальная позиция бита (индексация с 1). -
Положительные значения: отсчет от начала строки.
-
Отрицательные значения: отсчет от конца строки.
-
length— Необязательный параметр. Количество бит для извлечения. -
Положительные значения: извлекается
lengthбит. -
Отрицательные значения: извлечение от смещения до
(string_length - |length|). -
Если параметр опущен: извлечение от смещения до конца строки.
-
Если длина не делится на 8, результат дополняется нулями справа.
(U)Int8/16/32/64илиFloat*
Возвращаемое значение
Возвращает строку, содержащую извлеченные биты, представленные в виде бинарной последовательности. Результат всегда дополняется до границ байта (кратности 8 бит). String
Примеры
Пример использования
bitTest
Добавлено в версии: v1.1
Принимает число и преобразует его в двоичную форму, затем возвращает значение бита на заданной позиции. Подсчёт битов ведётся справа налево, начиная с 0.
Синтаксис
Аргументы
a— число для преобразования.(U)Int8/16/32/64илиFloat*i— позиция бита, который нужно вернуть.(U)Int8/16/32/64илиFloat*
Возвращаемое значение
Возвращает значение бита на позиции i в двоичном представлении числа a типа UInt8
Примеры
Пример использования
bitTestAll
Впервые добавлена в: v1.1
Возвращает результат логического И (оператор AND) всех битов в указанных позициях. Подсчёт ведётся справа налево, начиная с 0.
Логическое И между двумя битами истинно тогда и только тогда, когда оба входных бита истинны.
Синтаксис
Аргументы
a— Целочисленное значение.(U)Int8/16/32/64index1, ...— Одна или несколько позиций битов.(U)Int8/16/32/64
Возвращаемое значение
Возвращает результат логической конъюнкции типа UInt8
Примеры
Пример использования 1
Пример использования № 2
bitTestAny
Впервые появилась в версии v1.1
Возвращает результат логического сложения (оператора ИЛИ) всех битов на заданных позициях в числе. Подсчёт ведётся справа налево, начиная с 0.
Логическое ИЛИ между двумя битами истинно, если хотя бы один из входных битов истинен.
Синтаксис
Аргументы
a— Целое число.(U)Int8/16/32/64index1, ...— Одна или несколько позиций бит.(U)Int8/16/32/64
Возвращаемое значение
Возвращает результат операции логического «ИЛИ» UInt8
Примеры
Пример использования 1
Пример использования 2
bitXor
Добавлена в версии v1.1
Выполняет побитовую операцию исключающего ИЛИ (XOR) между двумя значениями.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает результат побитовой операции a XOR b.
Примеры
Пример использования