Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの<<と>>演算子とは?ビットシフト演算子の基本を解説

Pythonの<<と>>演算子(ビットシフト演算子)とは

Pythonにおける「<<」と「>>」は、それぞれ左シフト演算子右シフト演算子と呼ばれるビット単位の演算子です。第1オペランドには数値オブジェクトの2進数表現が用いられ、第2オペランドには、そのビット列を左右どちらの方向に何桁ずらすかを指定します。

これらの演算子を使うと、整数を2進数のビット列として操作でき、効率的な計算やフラグ管理などに役立ちます。

左シフト演算子「<<」の使い方

「<<」はビットパターンを左へシフトし、空いた右側(最下位ビット側)には0が埋められます。以下の例では、60(2進数で111100)を2桁左にシフトしています。

>>> a = 60
>>> bin(a)
'0b111100'
>>> b = a << 2
>>> b
240
>>> bin(b)
'0b11110000'

結果を見ると、元のビット列の末尾に2つの0が追加され、240(11110000)になっていることがわかります。これは「60 × 4(2の2乗)」と同じ結果です。

右シフト演算子「>>」の使い方

一方、「>>」はビットパターンを右へシフトし、空いた左側(最上位ビット側)には0が埋められます。

>>> a = 60
>>> bin(a)
'0b111100'
>>> b = a >> 2
>>> b
15
>>> bin(b)
'0b1111'

右端の2ビットが切り捨てられ、15(1111)になります。これは「60 ÷ 4(2の2乗)」の商と一致します。

まとめ:シフト演算と掛け算・割り算の関係

  • x << n は「x × 2ⁿ」と等価
  • x >> n は「x ÷ 2ⁿ」の商(小数点以下切り捨て)と等価

なお、負の数に対する右シフトでは挙動が異なる場合があるため注意が必要です。日常的なコードでは掛け算・割り算の方が読みやすいことが多いですが、ビット操作やパフォーマンスが重要な場面ではシフト演算子が活躍します。

  1. C#の左シフト演算子(<<)と右シフト演算子(>>)の使い方を解説

    C#には、ビット単位でデータを操作するための「シフト演算子」が用意されています。代表的なものが左シフト演算子(<<)と右シフト演算子(>>)です。この記事では、それぞれの仕組みと具体的な使い方をサンプルコードとともに解説します。 左シフト演算子(<<)とは 左シフト演算子は、左側のオペランドの値を、右側のオペランドが指定したビット数だけ左に移動させる演算子です。 ビットが左にずれると、空いた下位ビットには0が埋められます。2進数では1桁左にずれるごとに値が2倍になるため、左シフトは「2のn乗倍」の計算としても利用できます。 右シフト演算子(>>)

  2. Python・R以外で活躍するデータサイエンスツール5選を徹底解説

    データサイエンスといえばPythonやRが定番の言語として知られていますが、実際にはそれら以外にも、データ分析や機械学習の業務を強力に支えるツールが数多く存在します。本記事では、データサイエンスの実践に役立つ代表的な5つのツールについて、それぞれの特徴と強みをわかりやすくご紹介します。Apache Hadoop(アパッチ ハドゥープ)Apache Hadoopは、Javaベースで開発されたオープンソースの分散処理フレームワークです。Javaベースの無料ソフトウェアとして誰でも利用可能大量のデータを格納できる大容量ストレージ機能巨大なデータセットを分割して複数のサーバーで並列処理できるスケーラビ