* replace exit with assert in test_single_page * improve save_raw_single_page docs option * More grammar fixes * "Built from" link in new tab * fix mistype * Example of include in docs * add anchor to meeting form * Draft of translation helper * WIP on translation helper * Replace some fa docs content with machine translation * add normalize-en-markdown.sh * normalize some en markdown * normalize some en markdown * admonition support * normalize * normalize * normalize * support wide tables * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * normalize * lightly edited machine translation of introdpection.md * lightly edited machhine translation of lazy.md * WIP on translation utils * Normalize ru docs * Normalize other languages * some fixes * WIP on normalize/translate tools * add requirements.txt * [experimental] add es docs language as machine translated draft * remove duplicate script * Back to wider tab-stop (narrow renders not so well)
5.1 KiB
Битовые функции
Битовые функции работают для любой пары типов из UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32, Float64.
Тип результата - целое число, битность которого равна максимальной битности аргументов. Если хотя бы один аргумент знаковый, то результат - знаковое число. Если аргумент - число с плавающей запятой - оно приводится к Int64.
bitAnd(a, b)
bitOr(a, b)
bitXor(a, b)
bitNot(a)
bitShiftLeft(a, b)
bitShiftRight(a, b)
bitTest
Принимает любое целое число и конвертирует его в двоичное число, возвращает значение бита в указанной позиции. Отсчет начинается с 0 справа налево.
Синтаксис
SELECT bitTest(number, index)
Параметры
number
– целое число.index
– position of bit.
Возвращаемое значение
Возвращает значение бита в указанной позиции.
Тип: UInt8
.
Пример
Например, число 43 в двоичной системе счисления равно: 101011.
Запрос:
SELECT bitTest(43, 1)
Ответ:
┌─bitTest(43, 1)─┐
│ 1 │
└────────────────┘
Другой пример:
Запрос:
SELECT bitTest(43, 2)
Ответ:
┌─bitTest(43, 2)─┐
│ 0 │
└────────────────┘
bitTestAll
Возвращает результат логической конъюнкции (оператор AND) всех битов в указанных позициях. Отсчет начинается с 0 справа налево.
Бинарная конъюнкция:
0 AND 0 = 0 0 AND 1 = 0 1 AND 0 = 0 1 AND 1 = 1
Синтаксис
SELECT bitTestAll(number, index1, index2, index3, index4, ...)
Параметры
number
– целое число.index1
,index2
,index3
,index4
– позиция бита. Например, конъюнкция для набора позицийindex1
,index2
,index3
,index4
является истинной, если все его позиции истинныindex1
⋀index2
⋀index3
⋀index4
.
Возвращаемое значение
Возвращает результат логической конъюнкции.
Тип: UInt8
.
Пример
Например, число 43 в двоичной системе счисления равно: 101011.
Запрос:
SELECT bitTestAll(43, 0, 1, 3, 5)
Ответ:
┌─bitTestAll(43, 0, 1, 3, 5)─┐
│ 1 │
└────────────────────────────┘
Другой пример:
Запрос:
SELECT bitTestAll(43, 0, 1, 3, 5, 2)
Ответ:
┌─bitTestAll(43, 0, 1, 3, 5, 2)─┐
│ 0 │
└───────────────────────────────┘
bitTestAny
Возвращает результат логической дизъюнкции (оператор OR) всех битов в указанных позициях. Отсчет начинается с 0 справа налево.
Бинарная дизъюнкция:
0 OR 0 = 0 0 OR 1 = 1 1 OR 0 = 1 1 OR 1 = 1
Синтаксис
SELECT bitTestAny(number, index1, index2, index3, index4, ...)
Параметры
number
– целое число.index1
,index2
,index3
,index4
– позиции бита.
Возвращаемое значение
Возвращает результат логической дизъюнкции.
Тип: UInt8
.
Пример
Например, число 43 в двоичной системе счисления равно: 101011.
Запрос:
SELECT bitTestAny(43, 0, 2)
Ответ:
┌─bitTestAny(43, 0, 2)─┐
│ 1 │
└──────────────────────┘
Другой пример:
Запрос:
SELECT bitTestAny(43, 4, 2)
Ответ:
┌─bitTestAny(43, 4, 2)─┐
│ 0 │
└──────────────────────┘