Python 3 - Что такое ">>" - PullRequest
       12

Python 3 - Что такое ">>"

0 голосов
/ 27 декабря 2011

Это запутанная строка: x_next = (x_next + (a // x_prev)) >> 1

Ответы [ 4 ]

4 голосов
/ 27 декабря 2011

Это битовый сдвиг. Следующая даст вам некоторые интуиции:

>>> 16 >> 1
8
>>> 16 >> 2
4
>>> 16 >> 3
2
>>> bin(16)
'0b10000'
>>> bin(16 >> 1)
'0b1000'
>>> bin(16 >> 2)
'0b100'
1 голос
/ 27 декабря 2011

Оператор >> такой же, как и в Си и многих других языках.

Сдвиг вправо. Если ваш номер в двоичном виде такой: 0100, то он будет 0010 после >> 1. С >> 2 это будет 0001.

Так что в принципе это хороший способ разделить ваше число на 2 (при этом оставляя остаток);)

1 голос
/ 27 декабря 2011

Это оператор смещения вправо .

Здесь он используется для деления на 2. Было бы гораздо понятнее написать это как

x_next = (x_next + (a // x_prev)) // 2
* 1007К сожалению, многие люди стараются быть умными и используют операторы сдвига вместо умножения и деления.Как правило, это просто приводит к путанице для бедных людей, которым приходится читать код позже.
0 голосов
/ 27 декабря 2011

Это означает «сдвиг вправо».Он работает так же, как и деление на этаж на 2:

>>> a = 7
>>> a >> 1
3
>>> a // 2
3
...