operator logical example python syntax operator-keyword

logical - ¿Qué significan>> y<< en Python?



python// operator double slash (5)

Me doy cuenta de que puedo hacer cosas como 2 << 5 para obtener 64 y 1000 >> 2 para obtener 250.

También puedo usar >> en print :

print >>obj, "Hello world"

¿Que está sucediendo aquí?


12 << 2

48

El valor binario real de 12 es "00 1100" cuando ejecutamos la instrucción anterior. El desplazamiento a la izquierda (2 lugares desplazados a la izquierda) devuelve el valor 48, su valor binario es "11 0000".

48 >> 2

12

El valor binario de 48 es "11 0000", después de ejecutar la instrucción anterior Desplazar a la derecha (2 lugares desplazados a la derecha) devuelve el valor 12, su valor binario es "00 1100".


Creo que es una pregunta importante y aún no está respondida (parece que el OP ya sabe acerca de los operadores de turnos). Permítame tratar de responder, el operador >> en su ejemplo se usa para dos propósitos diferentes. En términos de c ++ este operador está sobrecargado. En el primer ejemplo se usa como operador bitwise (desplazamiento a la izquierda), mientras que en el segundo escenario se usa simplemente como redirección de salida. es decir

2 << 5 # shift to left by 5 bits 2 >> 5 # shift to right by 5 bits print >> obj, "Hello world" # redirect the output to obj,

ejemplo

with open(''foo.txt'', ''w'') as obj: print >> obj, "Hello world" # hello world now saved in foo.txt


El otro caso relacionado con print >>obj, "Hello World" es la sintaxis de "print chevron" para la declaración print en Python 2 (eliminada en Python 3, reemplazada por el argumento del file de la función print() ). En lugar de escribir en la salida estándar, la salida se pasa al método obj.write() . Un ejemplo típico serían los objetos de archivo que tienen un método write() . Vea la respuesta a una pregunta más reciente: doble mayor que el inicio de sesión en Python .


Estos son los operadores de cambio

x << 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 >> y Devuelve x con los bits desplazados a la derecha por y lugares. Esto es lo mismo que // ''ing x by 2 ** y.


Estos son operadores de cambio a nivel de bit.

Citando de los documentos :

x << 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 >> y

Devuelve x con los bits desplazados a la derecha por y lugares. Esto es lo mismo que dividir x por 2**y .