Python ビット演算子 [例付き]

公開: 2022-09-11

ビット演算子は Python プログラミング言語によって提供され、プログラマーが最も基本的なレベルでデータを操作できるようにします。つまり、すべての変数をより詳細に制御できます。

Python は、今日の世界で最も人気のあるプログラミング言語の 1 つです。 Python の汎用性とそれが提供する機能の数は、人気が高まっているいくつかの理由です。 この記事では、Python のビット演算子、さまざまな種類のビット演算子、その使用方法などについて説明します。

目次

Python のビット演算子の概要

ビット演算子は、さまざまなプログラミング言語で同じように見えます。 Python には、算術演算子、論理演算子、比較演算子など、さまざまな種類の演算子が付属しています。

オペレーター意味
& a & b ビット演算 AND
| | | | b ビットごとの OR
^ ^ b ビット単位の XOR (排他的 OR)
~a ビット単位の NOT
<< a << n ビット単位の左シフト
>> ある >> ないビットごとの右シフト

ほとんどのビット演算子は 2 項演算子です。つまり、通常は左オペランドと右オペランドと呼ばれる 2 つのオペランドを操作する必要があります。 ビット単位の NOT (~) は、オペランドが 1 つしか必要ないため、唯一の単項ビット単位演算子です。

人気のデータ サイエンス コースを探す

IIITBのデータサイエンスのエグゼクティブポスト大学院プログラム ビジネス上の意思決定のためのデータ サイエンスのプロフェッショナル認定プログラム アリゾナ大学でデータ サイエンスの理学修士号を取得
IIITB のデータ サイエンスの高度な証明書プログラム メリーランド大学のデータ サイエンスとビジネス分析のプロフェッショナル認定プログラム データサイエンスコース

ビット演算子とは

ビット単位の演算子は、整数に対してビット単位の計算を実行するために使用される演算子のタイプの 1 つです。 整数は最初にバイナリに変換され、次に操作がビットごとに実行されるため、ビットごとの演算子と呼ばれます。 結果は 10 進形式に変換されます。 これらの演算子は、整数に対してのみ計算を実行できます。

データ サイエンス認定資格をチェックして、スキルアップを図りましょう。

ビット演算子の重要性

おそらくビットごとの演算子が何であるかを理解したので、ビットごとの演算子の重要性に焦点を当てましょう。 それらは算術演算子よりも優れており、これらを使用する必要がある理由は次のとおりです。

  • 実行速度

ビット単位の演算子は、乗算または除算を実行するよりも高速です。 変数 x にたとえば 9 を掛ける必要がある場合は、(x<<3 + x) を実行できます。これは、(x*9) よりも数サイクル高速です。

  • エラーチェック

ビット単位の演算子は、エラーのチェックに広く使用されています。 別のサーバー上の別のコンピューターにビットを送信している場合、いくつかのエラーが発生するはずです。 これらのエラーは、ビット単位の演算子を使用して識別できます。

おそらくビット演算子の使用法と重要性を理解しているので、次はさまざまな種類のビット演算子について理解していきましょう。

さまざまな種類のビット演算子

ビット単位の論理演算子

ビット演算子 and、or、および xor は、左右のオペランドを持つ二項演算子です。 ビット演算子は、右オペランドのみを持つ単項オペランドではありません。 4 つのビット演算子すべての結果の型は整数です。 ビットごとの論理演算子は、オペランドの前に一度に 1 ビットを調べ、結果の対応する値を計算します。

ビット演算 AND

AND (&) 演算子は、2 つのビット間の AND を実行するために使用されます。 この場合、出力が真になるには、両方のビットが真である必要があります。 いずれかのビットが false の場合、出力は false です。 つまり、両方のビットが 1 の場合は 1 を返し、それ以外の場合は 0 を返します。

1&1 = 1

1&0 = 0

0&0 = 0

0&1 = 0

例:

a = 10 = 1010 (バイナリ)

b = 4 = 0100 (バイナリ)

a & b = 1010

&

0100

= 0000

= 0 (10 進数)

ビットごとの OR

OR (|) 演算子は、2 つのビット間の OR 演算を実行するために使用されます。 出力が真になるためには、ビットの 1 つが真である必要があります。 (&) 演算子とは異なり、結果が true になるために両方のビットが true である必要はありません。 言い換えると、結果のビットは、検討対象の両方のビットが 0 の場合にのみ 0 になり、それ以外の場合は結果が 1 になります。

1 | 1 = 1

1 | 0 = 1

0 | 1 = 1

0 | 0 = 0

例:

a = 10 = 1010 (バイナリ)

b = 4 = 0100 (バイナリ)

| | b = 1010

| |

0100

= 1110

= 14 (10 進数)

ビット単位の NOT

ビット単位の NOT (~) 演算子は、Python で数値の補数を返すために使用されます。 ただし、not 演算子は非常に単純な演算子であり、ビットを 0 から 1 および 1 から 0 に反転するために使用されます。

~13 (0b01101) = -14

~16 (0b010000) = -17

~31 (0b011111) = -32

例:

a = 10 = 1010 (バイナリ)

~a = ~1010

= -(1010 + 1)

= -(1011)

= -11 (10 進数)ビット単位の XOR 演算子

XOR (^) 演算子は、演算中の 2 つのビット間の XOR に使用されます。 XOR 演算は非常に簡単です。 2 つのビットが同じである場合、結果のビットは 0 でなければ 1 です。これは、処理を高速化するために論理計算で広く使用されています。

1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0

例:

a = 10 = 1010 (バイナリ)

b = 4 = 0100 (バイナリ)

a & b = 1010

^

0100

= 1110

= 14 (10 進数)

シフト演算子

これらのビット単位の演算子は、数値をそれぞれ 2 で乗算または除算することにより、数値のビットを左から右にシフトするために使用されます。 数値を 2 で除算または乗算する必要がある場合に使用できます。

ビットごとの右シフト

右 (>>) 演算子は、その名前が示すように、ビットを右側にシフトして、演算子の右側で表される数値にします。

人気のデータ サイエンス記事を読む

データ サイエンスのキャリア パス: 包括的なキャリア ガイド データ サイエンスのキャリア成長: 仕事の未来はここにあります データ サイエンスが重要な理由データ サイエンスがビジネスに価値をもたらす 8 つの方法
マネージャーにとってのデータサイエンスの関連性 すべてのデータ サイエンティストが持つべき究極のデータ サイエンス チート シート データ サイエンティストになるべき 6 つの理由
データ サイエンティストの 1 日: 彼らは何をしているのか? 神話の崩壊: データ サイエンスにコーディングは必要ない ビジネス インテリジェンスとデータ サイエンスの違い: 違いは何ですか?

例えば ​​– 10>>2 は 2 だけ右にシフト (1010) します。

例 1:

a = 10 = 0000 1010 (バイナリ)

を >> 1 = 0000 0101 = 5

例 2:

a = -10 = 1111 0110 (バイナリ)

>> 1 = 1111 1011 = -5

ビット単位の左シフト

左 (<<) 演算子は、その名前が示すように、ビットを左側にシフトして、演算子の右側で表される数値にします。

たとえば、1<< 2 は、2 つの値に対して 1 を左にシフトします。

例 1:

a = 5 = 0000 0101 (バイナリ)

a << 1 = 0000 1010 = 10

<< 2 = 0001 0100 = 20

例 2:

b = -10 = 1111 0110 (バイナリ)

b << 1 = 1110 1100 = -20

b << 2 = 1101 1000 = -40

人気のデータ サイエンス記事を読む

データ サイエンスのキャリア パス: 包括的なキャリア ガイド データ サイエンスのキャリア成長: 仕事の未来はここにあります データ サイエンスが重要な理由データ サイエンスがビジネスに価値をもたらす 8 つの方法
マネージャーにとってのデータサイエンスの関連性 すべてのデータ サイエンティストが持つべき究極のデータ サイエンス チート シート データ サイエンティストになるべき 6 つの理由
データ サイエンティストの 1 日: 彼らは何をしているのか? 神話の崩壊: データ サイエンスにコーディングは必要ない ビジネス インテリジェンスとデータ サイエンスの違い: 違いは何ですか?

結論

Python のビット演算子をよく理解していると、プロジェクトでバイナリ データを操作するのに役立ちます。 これで、ビット演算子とその構文、およびそれらをサポートするデータ型の基本を理解できました。 独自のニーズに合わせて動作をカスタマイズすることもできます。

Python とビット演算子について学び、知識を広げたい場合は、upGrad とメリーランド大学のProfessional Certificate Program in Data Science and Business Analyticsチェックしてください。あなたのポートフォリオに追加され、100 時間以上のライブ セッション、400 時間以上のトップ企業からの仕事支援による学習。

ビット演算子はどこで使用されますか?

ビット演算子は、数値の個々のビットを操作するために使用できます。 Python では、ビット単位の演算子は整数に対してビット単位の計算を実行します。 まず、整数がバイナリに変換され、次に操作が小さなチャンクで実行されます。これが、ビット単位の演算子の名前の由来です。 Python のビット演算子は整数に対してのみ使用され、結果を 10 進数形式で返します。

単一オペランド演算子とは何ですか?

算術演算子は、オペランドを使用して加算や減算などの数学演算を実行します。 単項と 2 項は、数学演算子の 2 つのカテゴリです。 単項演算子は 1 つのオペランドで関数を実行します。たとえば、ビット単位の NOT (~) ですが、2 項演算子は 2 つのオペランドを使用します。

なぜビット演算子が必要なのですか?

ビット演算子は、データを表すときにスペースを効率的に使用する優れた方法です。 これらの演算子は、ワールド内の特定のビットが意味を持つハードウェアによって提供されるデータを操作するときに必要です。 メモリを節約するには、ビット演算子が必要です。 データをワードではなくビットにパックするとメモリが節約され、多くの場合、膨大な量のデータと限られた量のメモリが存在する可能性があります。