5.4 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 3e185d24c9 |
48 | Trozo |
Bit funciones
Las funciones de bits funcionan para cualquier par de tipos de UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Float32 o Float64.
El tipo de resultado es un entero con bits iguales a los bits máximos de sus argumentos. Si al menos uno de los argumentos está firmado, el resultado es un número firmado. Si un argumento es un número de coma flotante, se convierte en Int64.
pocoY(a, b)
bitOr (a, b)
¿Por qué?)
¿Por qué?)
¿Cómo puedo hacerlo?)
¿Cómo puedo hacerlo?)
¿Cómo puedo hacerlo?)
¿Cómo puedo hacerlo?)
bitTest
Toma cualquier entero y lo convierte en forma binaria devuelve el valor de un bit en la posición especificada. La cuenta atrás comienza desde 0 de derecha a izquierda.
Sintaxis
SELECT bitTest(number, index)
Parámetros
number
– integer number.index
– position of bit.
Valores devueltos
Devuelve un valor de bit en la posición especificada.
Tipo: UInt8
.
Ejemplo
Por ejemplo, el número 43 en el sistema numérico base-2 (binario) es 101011.
Consulta:
SELECT bitTest(43, 1)
Resultado:
┌─bitTest(43, 1)─┐
│ 1 │
└────────────────┘
Otro ejemplo:
Consulta:
SELECT bitTest(43, 2)
Resultado:
┌─bitTest(43, 2)─┐
│ 0 │
└────────────────┘
bitTestAll
Devuelve el resultado de conjunción lógica (Operador AND) de todos los bits en posiciones dadas. La cuenta atrás comienza desde 0 de derecha a izquierda.
La conjucción para operaciones bit a bit:
0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1
Sintaxis
SELECT bitTestAll(number, index1, index2, index3, index4, ...)
Parámetros
number
– integer number.index1
,index2
,index3
,index4
– positions of bit. For example, for set of positions (index1
,index2
,index3
,index4
) es verdadero si y solo si todas sus posiciones son verdaderas (index1
⋀index2
, ⋀index3
⋀index4
).
Valores devueltos
Devuelve el resultado de la conjunción lógica.
Tipo: UInt8
.
Ejemplo
Por ejemplo, el número 43 en el sistema numérico base-2 (binario) es 101011.
Consulta:
SELECT bitTestAll(43, 0, 1, 3, 5)
Resultado:
┌─bitTestAll(43, 0, 1, 3, 5)─┐
│ 1 │
└────────────────────────────┘
Otro ejemplo:
Consulta:
SELECT bitTestAll(43, 0, 1, 3, 5, 2)
Resultado:
┌─bitTestAll(43, 0, 1, 3, 5, 2)─┐
│ 0 │
└───────────────────────────────┘
bitTestAny
Devuelve el resultado de disyunción lógica (O operador) de todos los bits en posiciones dadas. La cuenta atrás comienza desde 0 de derecha a izquierda.
La disyunción para las operaciones bit a bit:
0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1
Sintaxis
SELECT bitTestAny(number, index1, index2, index3, index4, ...)
Parámetros
number
– integer number.index1
,index2
,index3
,index4
– positions of bit.
Valores devueltos
Devuelve el resultado de disjuction lógico.
Tipo: UInt8
.
Ejemplo
Por ejemplo, el número 43 en el sistema numérico base-2 (binario) es 101011.
Consulta:
SELECT bitTestAny(43, 0, 2)
Resultado:
┌─bitTestAny(43, 0, 2)─┐
│ 1 │
└──────────────────────┘
Otro ejemplo:
Consulta:
SELECT bitTestAny(43, 4, 2)
Resultado:
┌─bitTestAny(43, 4, 2)─┐
│ 0 │
└──────────────────────┘
bitCount
Calcula el número de bits establecido en uno en la representación binaria de un número.
Sintaxis
bitCount(x)
Parámetros
x
— Entero o punto flotante numero. La función utiliza la representación de valor en la memoria. Permite admitir números de punto flotante.
Valor devuelto
- Número de bits establecido en uno en el número de entrada.
La función no convierte el valor de entrada a un tipo más grande (extensión de signo). Entonces, por ejemplo, bitCount(toUInt8(-1)) = 8
.
Tipo: UInt8
.
Ejemplo
Tomemos por ejemplo el número 333. Su representación binaria: 0000000101001101.
Consulta:
SELECT bitCount(333)
Resultado:
┌─bitCount(333)─┐
│ 5 │
└───────────────┘