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