Operadores bit a bit para una introducción básica a Python

Los operadores bit a bit convierten números a formato binario y luego realizan cálculos.

Por ejemplo: a = 60, b = 13,

a & b = 12, esto se debe a que a y b se convierten a binario como

a = 0011 1100,

segundo = 0000 1101,

a y b = 0000 1100 = 12,

Los operadores de bits incluyen los siguientes:

Operadores de bits significado

Ejemplo: a = 60 = 0011 1100,

           segundo = 13 = 0000 1101

& Y: Dos valores participan en la operación, si ambos bits correspondientes son 1, el resultado del bit es 1, de lo contrario es 0 a y b = 0000 1100 = 12
| O: Dos valores participando en la operación, si uno de los dos bits correspondientes es 1, el resultado de ese bit es 1, en caso contrario es 0. un | segundo = 0011 1101 = 61
^ XOR: Dos valores participan en la operación, si los dos bits correspondientes son inconsistentes, el resultado del bit es 1, de lo contrario es 0 a^b = 0011 0001 = 49
~ Negación: niega cada bit del valor involucrado en la operación, es decir, 1 se convierte en 0, 0 se convierte en 1, ~x es equivalente a -x-1 ~a = 1100 0011 = -61, el complemento del bit con signo (la representación binaria de números negativos se explicará más adelante)
<< Desplazamiento a la izquierda: Desplaza cada bit del valor que participa en la operación hacia la izquierda un número de bits. El número a la derecha de "<<" especifica el número de bits a mover. Los bits altos se descartan y los bits bajos se lleno de 0. un << 2 = 1111 0000 = 240
>> Desplazamiento a la derecha: Desplaza cada bit del valor que participa en la operación hacia la derecha un número de bits. El número a la derecha de "<<" especifica el número de bits a mover. Los bits bajos se descartan y los bits altos se lleno de 0. a >> 2 = 0000 1111 = 15

Ahora que comprende el significado de los operadores bit a bit, comencemos con los ejercicios.

Ejemplo 1: ingrese dos cadenas binarias no vacías, que contengan solo 0 y 1, y devuelva la suma de los dos números (1. Exprese el resultado en binario; 2. Todos los valores de entrada no son '0' excepto ' 0'.binario inicial)

Análisis: Podemos diseñar un algoritmo de este tipo para calcular:

Convierta a y b en números enteros cy d. En el siguiente proceso, c almacena el resultado y d almacena el bit de acarreo.

Cuando el bit de acarreo no es 0:

1. Calcule el resultado de la suma sin acarreo de las corrientes cyd: resultado = c ^ d;

2. Calcule el acarreo de corriente cyd: jin = (c & d) << 1;

3. Complete este ciclo y actualice c = resultado, d = jin;

Cuando el bit de acarreo es 0, se devuelve la forma binaria de c;

¿Por qué es factible este método? En la primera ronda de cálculo, el último dígito del resultado es el resultado después de la suma de c y d, y el penúltimo dígito de jin es el resultado de la suma de los últimos dígitos de c y d. En cada ronda posterior, dado que jin se obtiene mediante "Y bit a bit" y "desplazamiento a la izquierda" de cyd, se agregarán ceros al final, por lo que los siguientes dígitos no se verán afectados en el siguiente proceso de cálculo, y en cada ronda usted Puede obtener una respuesta con el bit i bajo y su acarreo al bit i+1 bajo, lo que también simula el proceso de suma.

El código se muestra a continuación:

def addBinary(self, a: str, b: str) -> str:
        c = int(a, 2)
        d = int(b, 2)
        while d:
            result = c ^ d
            jin = (c & d) << 1
            c = result
            d = jin
        return bin(c)[2:] # bin() 返回一个整数 int 或者长整数 long int 的二进制表示。

Lo anterior es una breve introducción a los operadores de bits. Más adelante registraré la representación de los números binarios negativos y cómo comprenderlos mejor. Gracias.

Indique la fuente al reimprimir, ¡muchas gracias!

Supongo que te gusta

Origin blog.csdn.net/hbblzjy/article/details/121802791
Recomendado
Clasificación