¿Qué significan >> y

5 minutos de lectura

avatar de usuario
usuario3201152

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

También puedo usar >> en print:

print >>obj, "Hello world"

¿Que está sucediendo aquí?

  • Preguntas frecuentes: ¿Qué hacen los operadores <<, >>, &, |, ~y ^ ¿hacer?

    –Ashwini Chaudhary

    3 de abril de 2014 a las 9:01


  • Aquí, ahora puede insertar esos símbolos en un motor de búsqueda y hacer que realmente los busque: símbolohound.com

    – usuario2357112

    3 de abril de 2014 a las 9:05

  • posible duplicado de operación y uso bit a bit

    – bóveda

    3 de abril de 2014 a las 9:28

  • @ user2357112 Eso será muy útil, gracias. Y para aquellos que dicen que es una pregunta básica, puede serlo, pero no tenía ningún concepto de los operadores bit a bit, por lo que nunca se me habría ocurrido buscar eso en la documentación…

    – usuario3201152

    3 de abril de 2014 a las 9:31

  • @joaquin ahora es el resultado número uno en google para python mayor que mayor que.

    – Jordán Reiter

    12/07/2016 a las 16:32

avatar de usuario
yosemite_k

los >> 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 utiliza como operador bit a bit (Giro a la derecha),

2 << 5  # shift left by 5 bits
        # 0b10 -> 0b1000000
1000 >> 2  # shift right by 5 bits
           # 0b1111101000 -> 0b11111010

Mientras que en el segundo escenario se usa para la redirección de salida, lo usa con objetos de archivo, como este:

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

Este segundo uso de >> solo funcionó en Python 2. En Python 3 es posible redirigir la salida de print() utilizando el file= argumento:

with open('foo.txt', 'w') as f:
    print('Hello world', file=f)  # "Hello world" now saved in foo.txt

  • Para su información, otro uso común del operador de desplazamiento a la derecha que puede ver en el código de Python ocurrirá en los archivos de Airflow. El marco Airflow sobrecarga el operador ‘>>’ para indicar que una tarea está más arriba que la otra: stackoverflow.com/questions/52389105/…

    – schimmy

    5 de julio de 2019 a las 17:14

  • en realidad puede anular estos operadores a través de la __rshift__ y __lshift__ métodos.

    – Trudolf

    13 de febrero de 2020 a las 6:29


  • Obtengo que 2 >> 5 es igual a 0. ¿Pensé que debería ser igual a 0.0001?

    – caja de luz142

    4 de mayo de 2020 a las 1:28

  • @ teter123f la operación es binaria. no es una operación decimal.

    – yosemite_k

    8 de mayo de 2020 a las 9:42

Estos son operadores de desplazamiento bit a bit.

Citando de la documentos:

x << y

Devoluciones 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

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

  • Quizás un ejemplo ayudaría, escriba una serie de estos en Python: print bin(1), print bin(1 << 1), print bin(17), print bin(17 >> 1) y así. Puedes ver cómo funciona sin explicaciones.

    – bartekbrak

    13 de octubre de 2015 a las 14:16


  • El operador de cambio de bits requiere 2 operandos, entonces, ¿por qué el operando es “imprimir” y el operando 2 es un objeto? como en print >>obj, "Hello world"

    – Ventilador Qi

    2 mayo 2016 a las 19:26

  • Es una respuesta al contexto proporcionado por OP (y por lo tanto conocido por OP) y no a la pregunta formulada.

    – z33k

    18 de junio de 2019 a las 8:00

  • @Qi Fan @z33k La pregunta se editó para agregar la referencia para imprimir más de un año después de que se escribiera esta respuesta. La pregunta original mencionada solo 2 << 5 y 1000 >> 2 ¯_(ツ)_/¯

    – Jaime

    18 de junio de 2019 a las 18:47

avatar de usuario
PAC

12 << 2

48

El valor binario real de 12 es “00 1100” cuando ejecutamos la declaración anterior. 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 declaración anterior. Desplazamiento a la derecha (2 lugares desplazados a la derecha) devuelve el valor 12, su valor binario es “00 1100”.

Son operadores de cambio de bits que existen en muchos lenguajes de programación convencionales, << es el desplazamiento a la izquierda y >> es el desplazamiento a la derecha, se pueden demostrar en la siguiente tabla, suponga que un número entero solo ocupa 1 byte en la memoria.

| operate | bit value | octal value |                       description                        |
| ------- | --------- | ----------- | -------------------------------------------------------- |
|         | 00000100  |           4 |                                                          |
| 4 << 2  | 00010000  |          16 | move all bits to left 2 bits, filled with 0 at the right |
| 16 >> 2 | 00000100  |           4 | move all bits to right 2 bits, filled with 0 at the left |

avatar de usuario
chrstphrchvz

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

avatar de usuario
medico

Estos son los operadores de turnos

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.

Son operadores “bit a bit”.
https://wiki.python.org/moin/BitwiseOperators

>>> help("symbols")

+-------------------------------------------------+---------------------------------------+
| Operator                                        | Description                           |
|=================================================|=======================================|
| "<<", ">>"                                      | Shifts                                |
+-------------------------------------------------+---------------------------------------+
| "&"                                             | Bitwise AND                           |
+-------------------------------------------------+---------------------------------------+
| "|"                                             | Bitwise OR                            |
+-------------------------------------------------+---------------------------------------+
| "~x"                                            | bitwise NOT                           |
+-----------------------------------------------------------------------------------------+
| "^"                                             | Bitwise XOR                           |
+-------------------------------------------------+---------------------------------------+

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.

PD: En python 3.9 el operador ” | “ Aplicado a diccionarios fusiona diccionarios.

https://docs.python.org/3.9/whatsnew/3.9.html

>>> x = {"key1": "value1 from x", "key2": "value2 from x"}
>>> y = {"key2": "value2 from y", "key3": "value3 from y"}
>>> x | y
{'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}
>>> y | x
{'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad