XOR (排他的 OR) は、エラー チェックやフォールト トレランスなどのためにパリティ ビットを生成するために使用されるブール論理演算です。この操作を表すには、^、⊕、⊻ などのさまざまな記号が使用されます。
XOR 演算は、2 つのパラメータが異なる場合にのみ true になります。つまり、同じビットの XOR は 0 で、異なるビットの XOR は 1 になります。
同じビット -
0^0=0
1^1=0
異なるビット −
0^1=1
1 ^ 0 = 1
###問題文###-小さい数値の後に末尾のゼロを追加すると、バイナリ表現は等しくなります。 ###例### 入力 -
0
イラスト10 の 2 進表現は 1010、5 の 2 進表現は 101 です。
末尾のゼロを 5 に追加すると、1010 になります。 したがって、1010^1010 の XOR 結果は 0 になります。
したがって、出力します。
######入力 ### - ###a = 15、b = 8
出力−
###7###イラスト -
15 の 2 進表現は 1111、8 の 2 進表現は 1000 です。
2 つのバイナリ表現は長さが等しいため、末尾にゼロを追加する必要はありません。 1111 ^ 1000 の XOR 結果は 0111 で、これは 10 進表記の 7 です。したがって、出力は 7 になります。
######入力 ### - ###a = 15、b = 3
出力 −
###7### イラスト-
15 の 2 進表現は 1111 です。3 の 2 進表現は 11 です。3 の 2 進表現は、末尾にゼロを付けると 1100 になります。
1111^1100 の XOR 結果は 0011 です。 0011 は 10 進数で表すと 3 です。したがって、結果が出力されます。
###方法###
2 つの数値の桁数を計算します。
数字を0になるまで右にシフトし、ループの実行回数をカウントすることで桁数を計算できます。数値を右に 1 桁シフトすることは、2 で割ることと同じです。
小さい数値の桁数が少ない場合は、small_number
2 つの数値を XOR して答えを取得し、出力します。
分析
- O(log n) [対数]
この数値はゼロになるまで 2 で除算されるため、計算量は log n 底 2 になります。
- O(1) [定数]
以上が2 つの数値のバイナリ表現の長さが等しくなるように調整し、XOR 演算を実行します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。