Matemáticas: funciones bit a bit
Una función bit a bit funciona en uno o más patrones de bits o números binarios a nivel de sus bits individuales. Utiliza una función bit a bit para manipular valores para comparaciones y cálculos. Las funciones de bit a bit solo se pueden utilizar con tipos de dato NUMBER y producirán un resultado int64.
Importante
Si los valores double/float se dan como argumentos, se truncan a enteros de 64 bits. Los valores negativos se tratan como el complemento de dos, números enteros de 64 bits. Es decir, -16 y -16,9999 se tratan como 0xfffffffffffffffff0.
BinaryAnd
BinaryAnd(n,m)
: devuelve un binario de (n) y (m). El resultado es 1 si (n) y (m) son 1, y 0 en caso contrario. Si 0 equivale falso y 1 verdadero, la operación BinaryAnd funciona como un AND lógico. Observe la ausencia de la coma decimal en los valores de resultado. El resultado es un entero, no un valor doble/flotante.
Ejemplo
BinaryAnd(1,1)
devuelve 1.
BinaryAnd(1,0)
devuelve 0.
BinaryAnd(12,6)
devuelve 4.
BinaryAnd(12.99, 6.99)
devuelve 4.
BinaryAnd(-12, 6.99)
devuelve 4.
BinaryNot
BinaryNot(n)
: devuelve un NOT binario de (n). Los números se tratan como números complementarios de 64 bits de dos.
Ejemplo
BinaryNot(6)
devuelve -7.
BinaryNot(2)
devuelve 3.
BinaryNot(-1)
devuelve 0.
BinaryNot(0)
devuelve -1.
BinaryOr
BinaryOr(n,m)
: devuelve un OR binario de (n) y (m)
Ejemplo
BinaryOr(6,6)
devuelve 6.
BinaryOr(6,2)
devuelve 6.
BinaryOr(4,2)
devuelve 6.
BinaryOr(12,6)
devuelve 14.
BinaryXOR
BinaryXOr(n,m)
: Devuelve un XOr binario de (n) y (m)
Ejemplo
BinaryXOr(6,6)
devuelve 0.
BinaryXOr(6,2)
devuelve 4.
BinaryXOr(6,12)
devuelve 10.
ShiftLeft
ShiftLeft(n,b)
: Mueve (n) (un número entero) a la izquierda un total de (b) bits.
ShiftRight
ShiftRight(n,b)
: mueve (n) (un número entero) a la derecha un total de (b) bits.
Tanto para ShiftLeft como para ShiftRight el resultado es un Int64, por lo que solo 64 bits están disponibles.
Ejemplo
ShiftLeft(pow(2,62),1)
devuelve
-pow(2,63)
. Muévalo hacia la izquierda una vez más y obtienes cero.
ShiftRight(1,1)
devuelve cero.
ShiftRight(-1,1)
Devuelve
Int64_Max
.