logo

Python の 2 つの変数の XOR

XOR または排他的論理演算は、暗号化およびエラー チェックとフォールト トレランスのためのパリティ ビットの生成で広く使用されているブール論理演算です。この操作は 2 つの入力を受け取り、1 つの出力を生成します。この操作は伝統的にビットごとに行われますが、論理的に実行することもできます。この記事では、2 つの変数の論理 XOR を取得する方法を説明します。 パイソン

2 つの数値の XOR

XOR は ビット演算子 、両方の整数を 2 進数に変換した後、ビットごとに比較します。 XOR (バイナリ) の真理値表を以下に示します。



BA⊕B
110
011
101
000

XOR 演算の式は次のとおりです。

XOR(A, B) = ( A .overline{B}) + (B.overline{A})>

Python では、特にこの目的のために演算子、つまりキャレット ^ が提供されているため、2 つの整数の XOR を実行するのは簡単です。ただし、この操作は Python の演算子モジュールを使用して実現することもできます。

注記: XOR 操作を実行する際に注意すべき点がいくつかあります。



ハードカバーとペーパーバック
  • XOR は同種の要素間でのみ行う必要があります。つまり、それらのデータ型は同じである必要があります。
  • 文字列のブール値は次のようになります 真実 文字列が空でない場合、および 間違い 文字列が空の場合。

次に、Python のさまざまなデータ型に対する XOR 演算を見てみましょう。

整数の XOR

まず整数が 2 進数に変換され、次に各ビットが相互に比較されます。最終的な答えは、再び元の整数形式に変換されます。次のコードは、2 つの整変数の XOR を実行するためのキャレットの使用法を示しています。

例: まず、10 と 27 の整数値を含む 2 つの変数が初期化されました。次に、キャレット演算子を使用して 2 つの変数の xor が取得されます。操作の結果が表示されます。



パイソン
# First integer a = 10 # Second integer b = 27 # Performing the xor and storing the result in separate variable xor = a ^ b print(xor)>

出力:

17>

時間計算量: O(1)

空間の複雑さ: O(1)

ブール値の XOR

2 つのブール変数の XOR は非常に簡単です。 XOR 演算の出力は 0 または 1 で、ブール形式でそれぞれ True または Flase を表します。したがって、ブール データ型の論理 XOR を取得するには、入力値として True または False が提供されます。

例: まず 2 つのブール変数が値で初期化され、次にキャレット演算子を使用してそれらに対して XOR 演算が実行されます。

パイソン
# First boolean a = True # Second boolean b = False # Performing the xor operation xor = a ^ b print(xor)>

出力:

シェルスクリプトのパラメータ
True>

時間計算量: O(1)

文字列.値

空間の複雑さ: O(1)

文字列の XOR

文字列はシーケンスであるため、文字列に対して操作を実行するにはデータ型を正規化する必要があります。したがって、文字列は bool に変換され、それに対して xor 演算を実行できます。しかし、このため、操作の結果はバイナリになります。つまり、次のいずれかの結果になります。 真実 または 間違い (結果の値が生成される整数の xor とは異なります)。

例: 最初に 2 つの文字列が定義されます。そのうちの 1 つは空の文字列です。次に、文字列がブール データ型に変換され、XOR 演算が実行されます。結果が表示されます。

パイソン
# First string a = 'Hello World!' # Second string b = '' # Performing the xor operation xor = bool(a) ^ bool(b) print(xor)>

出力:

True>

時間計算量: O(n)

空間計算量: O(n)、n は文字列の長さ

演算子モジュールを使用した 2 つの変数の XOR

Python には演算子モジュールがあり、算術演算子、論理演算子、ビット単位演算子、および比較演算子用の事前定義関数のセットを提供します。また、2 つの変数の XOR を取得するために使用できるビット単位演算子の XOR 関数も提供します。

タイプスクリプトの日付

例: まずオペレーターモジュールをインポートします。次に、2 つの変数が値で初期化され、演算子モジュールの xor 関数を使用してそれらに対して XOR 演算が実行されます。

パイソン
# import module import operator # First integer a = 10 # Second integer b = 27 # Performing the xor using operator module xor = operator.xor(a,b) print(xor)>

出力:

17>

時間計算量: O(1)

空間の複雑さ: O(1)

一時変数を使用せずに XOR を使用して 2 つの整数を交換する

Python の XOR ビット演算は、一時変数を使用せずに 2 つの整数を交換するために使用することもできます。これがどのように機能するかを見てみましょう。

a = a ^ b b = a ^ b a = a ^ b>

スワッピングには、XOR 演算を含む 3 つの式が必要です。

  1. 2 つの整数の XOR 「あ」 そして ' b’ そしてその結果を保存します 整数で 「あ」 自体。
  2. ここで、更新された値の XOR を計算します。 「あ」 「b」。 これにより、元の値が得られます。 「あ」 、現在はに保存されています 「b」
  3. 最後にXOR 「あ」 現在更新された値は 「b」 前のステップで。結果は元の値になります 「b」 。現在保存されているのは 「あ」

例: まず、2 つの整数が初期化されます。次に、上記の 3 つの手順を使用して、XOR キャレット演算子を使用して 2 つの整数の交換が行われます。最後に、交換された整数を出力します。

パイソン
# First integer a = 10 # Second integer b = 27 print('Before Swapping:') print('a =', a) print('b =', b) # swapping integers using XOR a = a ^ b b = a ^ b a = a ^ b print('After Swapping:') print('a =', a) print('b =', b)>

出力:

Before Swapping: a = 10 b = 27 After Swapping: a = 27 b = 10>