Что делает оператор >>
? Например, что делает следующая операция 10 >> 1 = 5
?
>> оператор в Python
Ответ 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
.