Подтвердить что ты не робот

>> оператор в Python

Что делает оператор >>? Например, что делает следующая операция 10 >> 1 = 5?

4b9b3361

Ответ 1

Это правильный оператор сдвига битов, "перемещает" все биты один раз вправо.

10 в двоичном формате

1010

сдвинут вправо, он превратится в

0101

который равен 5

Ответ 2

>> и << - это бит-операторы Right-Shift и Left-Shift, т.е. они изменяют двоичное представление числа (оно может можно использовать и для других структур данных, но Python этого не реализует). Они определены для класса с помощью __rshift__(self, shift) и __lshift__(self, shift).

Пример:

>>> bin(10) # 10 in binary
1010
>>> 10 >> 1 # Shifting all the bits to the right and discarding the rightmost one
5 
>>> bin(_) # 5 in binary - you can see the transformation clearly now
0101 

>>> 10 >> 2 # Shifting all the bits right by two and discarding the two-rightmost ones
2
>>> bin(_)
0010

Ярлык: Просто для выполнения целочисленного деления (т.е. отбросить остаток, в Python, вы должны реализовать его как //) на число на 2, увеличенное до количества бит, которые вы были смещение.

>>> def rshift(no, shift = 1):
...     return no // 2**shift
...     # This func will now be equivalent to >> operator.
...

Ответ 3

Вы можете фактически перегрузить операцию смены вправо ( → ).

>>> class wierd(str): 
... def __rshift__(self,other): 
... print self, 'followed by', other 
... 
>>> foo = wierd('foo') 
>>> bar = wierd('bar') 
>>> foo>>bar 
foo followed by bar 

Ссылка: http://www.gossamer-threads.com/lists/python/python/122384

Ответ 4

См. раздел 5.7 Shifting Operations в Справочном руководстве Python.

Они переносят первый аргумент на слева или справа на количество бит заданный вторым аргументом.

Ответ 5

Его оператор right shift.

10 в двоичном формате 1010 теперь >> 1 говорит правому сдвигу на 1, эффективно теряя младший значащий бит, чтобы дать 101, который 5 представлен в двоичном формате.

По сути это divides число на 2.