「n << 1 == n*2 and n >> 1 == n/2」がどのように機能するかをさまよっていますが、検索エンジンで答えが得られません。
2 に答える
正直な答えは、 Googleを使用して効果的に検索するには、および演算子が何と呼ばれるかについての事前知識が必要であるということです。<<
>>
不自然な答えは、Googleでのようなものを検索することですpython "<<" ">>" operator
。Google検索用語の引用符は、引用符で囲まれた文字列が各ヒットに表示されることを保証します。
最初のリンクは「9.9演算子-関数としての標準演算子」へのリンクです。そのページを検索すると、'<<'
最終的には
Left Shift a << b lshift(a, b)
Right Shift a >> b rshift(a, b)
lshift
これは(同じページの)定義に(検索することによって)あなたを導きます:
operator.lshift(a, b)
operator.__lshift__(a, b)
Return a shifted left by b.
ただし、これもそれほど明確ではないかもしれません。これは、のバイナリ表現がa
左の場所にビットシフトされb
、結果の値が返されることを意味します。(>>
、rshift演算子は、ビットシフトが右に行われることを除いて、同じように機能します。)
それらは私にはビットシフトのように見えます。少なくとも C++ では、「n>>1」はすべてのビット (1 と 0) を右にシフトすることを意味します。つまり、10 進数の 6 (バイナリ表現 110) は 11 (0 をシフト) になり、10 進数の 3 になります。つまり、n=6 の場合、n>>1==n/2 は true と評価されます。
詳細と詳しい説明については、http://en.wikipedia.org/wiki/Arithmetic_shiftを参照してください。