-1

重複の可能性:
Python - '>>' 演算子

これを行うコードがいくつかあります:

x = n - 1 >> 1

さらに構文を提供する必要があるかどうかはわかりませんが、>> はどういう意味ですか? いろいろ調べてみましたが、説明が見つかりません。

4

4 に答える 4

6

その右シフト論理、それはその量だけビット単位でシフトする数を指示するビット単位の演算です。この場合、1でシフトします。これは、2で割ることに相当します。

ビット演算を理解していない場合は、覚えておくべき簡単な変換はこれです。

x >> n

と同等です

x //(2 ** n)

于 2012-07-12T16:18:32.140 に答える
3

これは、ビット単位の右シフト演算子です。

整数引数のビットを、式の右辺の数値だけ右にシフトします。

>>> 8 >> 2
2

またはバイナリで示されています:

>>> bin(0b1000 >> 2)
'0b10'

コード例は、算術演算とビット演算が混在しているため、実際には二重に混乱しています。代わりに「//」整数除算演算を使用する必要があります。

x = (n - 1) // 2
于 2012-07-12T16:18:49.220 に答える
1

>> はビットごとの右シフト演算子です。この演算子は、第 1 オペランドのすべてのビットを第 2 オペランドの右に移動します。

つまり: a >> b = a // 2**b

例:

  • 2 進数で 36 は 0b100100 です
  • 36 >> 1 は 0b10010 (最後の 2 進数または「ビット」が削除されます) であり、18 です。
  • 36 >> 2 は 0b1001 (2 ビット削除) で、9 です

演算子は加算の後に続くことに注意してください。したがって、コードは最初に n-1 を実行し、次にそれを 1 ビット右シフトします (つまり、2 で除算します)。

于 2012-07-12T16:30:09.547 に答える
1
x >> y

と同等です

x.__rshift__(y)

他の人が言ったように、これはビットシフトを意図しています。

于 2012-07-12T16:27:18.130 に答える