2012-08-18 8 views
6

PythonはPythonで<<行いを何の操作<<はPythonで何を表していますか?

1 << 16 = 65536 

を言いますか?

+3

http://wiki.python.org/moin/BitwiseOperators – jeremy

+1

[算術シフト](HTTP:/あなたはX < <を見るたび

だから、yはとしてそれを解釈します/en.wikipedia.org/wiki/Arithmetic_shift) – Buddy

+1

が見http://docs.python.org/reference/expressions.html?highlight=bit%20shift#shifting-operations –

答えて

12

これはPythonの左シフト演算子です。 左シフト操作は、名前が示すように、ビットを左に移動します。

は、あなたが持っていると仮定し、そのバイナリ表現である0010 だから 2<<2を左に二度ビットをシフトすることを意味2: - > 0100 - > 1000年

1000は8用のバイナリ表現です。数学的には、左シフトは数字に2の累乗を掛けることと同じですが、操作はシフトだけで行われるため、乗算よりもはるかに高速です。それについて考えるために

+0

あなたはそれが良いかどうかについてはコメントでしたべき乗剰余を可能な限りビットシフトに置き換える考え? – Genre

+0

@Genre良いアイデアです。ビットシフトは一般に1つのアセンブリ命令であり、累乗は数回かかる場合があります。良いライブラリとコンパイラは、基数が2の場合の最適化を試みるかもしれません。コードは、コードが読みにくくなります(1 << 16は2^16として読み込めません)。したがって、節約が可読性の損失を補うかどうかを評価する必要があります。 –

5

<<それはPythonで左シフト演算子です。詳細はdocumentationをご覧ください。

9

これはleft shift operator

1<<16 1を16ビット左シフトする意味です。

3

もう一つの方法は、1回2^16です。

X * 2^yの

関連する問題