Introducción al enmascaramiento de bits en Python

Zeeshan Afridi 8 octubre 2023
Introducción al enmascaramiento de bits en Python

Este tutorial educa sobre el enmascaramiento de bits en Python y demuestra cómo podemos realizar el enmascaramiento de bits con operadores bit a bit, por ejemplo, Y, O, NO, etc.

Introducción a la máscara de bits en Python

Bitmask es un concepto general para casi todos los lenguajes de programación; básicamente, es solo una variable que lo ayuda con operaciones bit a bit y ayuda a comprender y manipular los bits de un valor, digamos valores enteros.

También ayuda a comprimir los valores en una versión más pequeña y eficiente, lo que reduce el uso de memoria y las operaciones en bits. En las computadoras, cada dato o información se almacena en bits en un nivel inferior.

Este bit solo puede estar en dos estados, ya sea 0 (False) o 1 (True), y una combinación específica tiene un significado particular.

Veamos un ejemplo para entender el concepto de máscara de bits en Python.

# convert 8 into binary format --> 1000
bindata = format(8, "b")
print(bindata)

Producción :

1000

En el ejemplo anterior, hemos convertido 8, un entero decimal, en forma binaria, equivalente a 1000. Ahora, podemos interactuar con 8 en una forma más profunda y manipular cada parte de él.

Aquí es donde entra en escena el concepto de enmascaramiento de bits. Pero, primero, veamos un ejemplo de cómo podemos interactuar con los bits binarios.

Código de ejemplo:

bin_a = int(format(8, "b"))  # 1000
bin_b = int(format(1, "b"))  # 0001 or 1

# 1000 (8)
# 0001 (1) OR (|) Bitwise Operator
# -----
# 1001 (9)

print(f"bin_ a = {bin_a}")
print(f"bin_ b =  {bin_b}")
print(f"The OR (SUM) of bin_a and bin_b = {(bin_a | bin_b)}")

Producción :

bin_ a = 1000
bin_ b =  1
The OR (SUM) of bin_a and bin_b = 1001

En la cerca de código anterior, hemos usado el operador bit a bit OR representado como |, que se usa para agregar valores binarios poco a poco.

Operadores bit a bit en Python

Los operadores bit a bit realizan operaciones bit a bit de cualquier tipo integral short, byte, long, char, int, etc. Existen diferentes operadores bit a bit, cada uno tiene un caso de uso específico.

  1. Bit a bit O |
  2. Bit a bit Y &
  3. Bit a bit XOR ^
  4. Complemento bit a bit ~

Bit a bit O |

El operador OR es un operador bit a bit representado como |, y manipula bit a bit dos o más valores y devuelve true cuando al menos un valor es true o false.

La siguiente es la estructura básica de OR (|) para dos valores:

A B A & B
1 (True) 1 (True) 1 (True)
0 (False) 0 (False) 0 (False)
1 (True) 0 (False) 1 (False)
0 (False) 1 (True) 0 (False)

Código de ejemplo:

# Bitwise operator OR (|)

a = int(format(5, "b"))  # 101
b = int(format(4, "b"))  # 100

# 101 (5)
# 100 (4)  OR (|) Bitwise Operator
# ------
# 101 (5)

print(f"a = {a}\nb = {b}")
print("a & b = ", (a | b))  # 101

Producción :

a = 101
b = 100
a & b =  101

Bit a bit Y &

El operador AND es un operador bit a bit representado como &, y realiza un cálculo bit a bit de dos o múltiples valores y devuelve true si ambos valores son verdaderos; en caso contrario, false.

La es la estructura básica de AND (&) para dos valores:

A B A y B
1 (Verdadero) 1 (Verdadero) 1 (Verdadero)
0 (falso) 0 (falso) 0 (falso)
1 (Verdadero) 0 (falso) 1 (falso)
0 (falso) 1 (Verdadero) 0 (falso)

Código de ejemplo:

# Bitwise operator AND (&)

a = int(format(5, "b"))  # 101
b = int(format(4, "b"))  # 100

# 101 (5)
# 100 (4)  AND (&) Bitwise Operator
# -----
# 100 (4)

print(f"a = {a}\nb = {b}")
print("a & b = ", (a & b))  # 100

Producción :

a = 101
b = 100
a & b =  100

Bit a bit XOR ^

Es un operador binario denotado por ^, y devuelve false cuando los dos valores dados son iguales, ya sea true o false; de lo contrario, devolverá true.

La estructura básica del operador XOR es la siguiente:

A B A ^ B
1 (Verdadero) 1 (Verdadero) 0 (falso)
0 (falso) 0 (falso) 0 (falso)
1 (Verdadero) 0 (falso) 1 (Verdadero)
0 (falso) 1 (Verdadero) 1 (Verdadero)

Código de ejemplo:

# Bitwise operator XOR (^)

a = int(format(7, "b"))  # 101
b = int(format(4, "b"))  # 100

# 111 (7)
# 100 (4)  XOR (^) Bitwise Operator
# ------
# 011 (3)

print(f"a = {a}\nb = {b}")
print("a ^ b = ", (a ^ b))  # 011 or 11

Producción :

a = 111
b = 100
a ^ b =  11

Complemento bit a bit ~

El Complemento bit a bit (~) es un operador unario conocido como el operador NOT. El operador NOT invierte el patrón de bits de un valor.

La estructura básica del operador NOT es:

A ~A
1 (Verdadero) 0 (falso)
0 (falso) 1 (Verdadero)

Veamos un ejemplo a continuación para aprender el concepto de NO (~).

# Bitwise operator NOT (~)

a = int(format(0, "b"))

print(f"a = {a}")
print(f"The Complement of a = {~a}")

Producción :

a = 0
The Complement of a = -1
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn