Skip to main content

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 .