Friday 27 October 2017

Opciones Binarias Python


FAQ: ¿Qué hacen los operadores & lt; & gt; & gt; & gt; & amp ;, & , Y ^ hacer? Estos son los operadores bit a bit de Python. Preámbulo: Dos números de complemento Todos estos operadores comparten algo en común: son operadores "bit a bit". Es decir, operan en números (normalmente), pero en lugar de tratar ese número como si fuera un solo valor, lo tratan como si fuera una cadena de bits, escrita en binario de dos complementos. Un binario de complemento de dos es igual que la representación binaria clásica para enteros positivos pero es ligeramente diferente para números negativos. Los números negativos se representan realizando la operación del complemento de dos en su valor absoluto. Así que un breve resumen de binario de dos complementos está en orden: Binario Complemento de dos para enteros positivos: 0 se escribe como "0" 1 se escribe como "1" 2 se escribe como "10" 3 es "11" 4 es "100" 5 es "101" . . 1029 es "10000000101" == 2 ** 10 + 2 ** 2 + 2 ** 0 == 1024 + 4 + 1 Binario Complemento de dos para enteros negativos: Los números negativos se escriben con uno principal en lugar de un cero inicial. Por lo tanto, si utiliza sólo 8 bits para sus números de complemento de dos, entonces se tratan patrones de "00000000" a "01111111" como números enteros de 0 a 127, y reserva "1xxxxxxx" para escribir números negativos. Un número negativo, - x, se escribe utilizando el patrón de bits para (x-1) con todos los bits complementados (cambiados de 1 a 0 o 0 a 1). Así que -1 es complemento (1 - 1) = complemento (0) = "11111111", y -10 es complemento (10 - 1) = complemento (9) = complemento ( "00001001") = "11110110". Esto significa que los números negativos bajan hasta -128 ( "10000000"). Por supuesto, Python no utiliza números de 8 bits. Usó para utilizar sin embargo muchos pedacitos eran nativos a su máquina, pero puesto que ése no era portable, ha cambiado recientemente a usar un número INFINITO de pedacitos. Así, el número -5 es tratado por operadores bit a bit como si estuviera escrito "1111111111111111111011". ¡Uf! Con ese preámbulo fuera del camino (y hey, usted probablemente sabía esto ya), los operadores son fáciles de explicar: Los Operadores: X & lt; & lt; Y Devuelve x con los bits desplazados a la izquierda por y lugares (y los nuevos bits en el lado derecho son ceros). Esto es lo mismo que multiplicar x por 2 ** y. X & gt; & gt; Y Devuelve x con los bits desplazados hacia la derecha por y lugares. Esto es lo mismo que // 'ing x por 2 ** y. X & amp; Y Hace un "bit a bit y". Cada bit de la salida es 1 si el bit correspondiente de xY de y es 1, de lo contrario es 0. x | Y Hace un "bit a bit o". Cada bit de la salida es 0 si el bit correspondiente de xY de y es 0, de lo contrario es 1. X Devuelve el complemento de x - el número que obtienes cambiando cada 1 para un 0 y cada 0 para un 1. Esto es lo mismo que - x - 1. x ^ y Hace un "bit a bit exclusivo o". Cada bit de la salida es el mismo que el bit correspondiente en x si ese bit en y es 0, y es el complemento del bit en x si ese bit en y es 1. Sólo recuerde acerca de esa serie infinita de 1 bits en un número negativo, y todos estos deben tener sentido. Otras Clases Un punto más: Python permite la sobrecarga del operador, por lo que algunas clases se pueden escribir para permitir que los operadores bit a bit, pero con algún otro significado. Por ejemplo, el nuevo módulo de conjuntos para Python 2.3 utiliza | Y & amp; Para unión e intersección.

No comments:

Post a Comment