2012-08-18 24 views
6

Python dice¿Qué significa << representa en python?

1 << 16 = 65536 

¿Qué operación hace << realiza en Python?

+3

http://wiki.python.org/moin/BitwiseOperators – jeremy

+1

[desplazamiento aritmético] (http://es.wikipedia.org/wiki/Arithmetic_shift) – Buddy

+1

ver http://docs.python.org/reference/expressions.html?highlight=bit%20shift#shifting-operations –

Respuesta

12

Es el operador de desplazamiento a la izquierda para Python. Una operación de desplazamiento a la izquierda, como su nombre lo indica, mueve los bits hacia la izquierda.

Suponga que tiene 2 cuya representación binaria es 0010. Así 2<<2 significa para desplazar los bits dos veces a la izquierda:

0010 -> 0100 -> 1000

1000 es la representación binaria de 8. Matemáticamente, el desplazamiento a la izquierda es lo mismo que multiplicar un número por una potencia de 2: a<<b == a*2^b, pero como la operación se realiza solo por desplazamiento, es mucho más rápido que hacer multiplicaciones.

+0

¿Podría comentar si es o no un buen producto? ¿idea para reemplazar la exponenciación con cambios de bit cuando sea posible? – Genre

+0

@Genre Es una buena idea. Un cambio de bit es generalmente una instrucción de ensamblaje única mientras que la exponenciación puede tomar varios. Las buenas bibliotecas y compiladores pueden intentar optimizar para el caso en el que la base tenga una potencia de 2. Una estafa es que el código se vuelve menos legible (1 << 16 no es legible como 2^16). Por lo tanto, debe evaluar si los ahorros compensan la pérdida de legibilidad. –

5

<< es el operador de desplazamiento a la izquierda en Python. Eche un vistazo a documentation para más detalles.

9

Esto es left shift operator

1<<16 implica 1 para ser desplazado a la izquierda por 16 bits.

3

Otra forma de pensarlo es 1 por 2^16.

Así que cada vez que vea x < < y lo interpretan como:

x * 2^y