ホームページ  >  記事  >  バックエンド開発  >  2 つの数値のバイナリ表現の長さが等しくなるように調整し、XOR 演算を実行します。

2 つの数値のバイナリ表現の長さが等しくなるように調整し、XOR 演算を実行します。

WBOY
WBOY転載
2023-09-10 16:01:021267ブラウズ

2 つの数値のバイナリ表現の長さが等しくなるように調整し、XOR 演算を実行します。

XOR (排他的 OR) は、エラー チェックやフォールト トレランスなどのためにパリティ ビットを生成するために使用されるブール論理演算です。この操作を表すには、^、⊕、⊻ などのさまざまな記号が使用されます。

XOR ロジック

XOR 演算は、2 つのパラメータが異なる場合にのみ true になります。つまり、同じビットの XOR は 0 で、異なるビットの XOR は 1 になります。

同じビット -

0^0=0

1^1=0

異なるビット −

0^1=1

1 ^ 0 = 1

###問題文###

2 つの数値 a と b が与えられた場合、それらのバイナリ表現の長さを等しくした後、排他的論理和を求めます。

ヒント

-小さい数値の後に末尾のゼロを追加すると、バイナリ表現は等しくなります。 ###例### 入力 -

a = 10、b = 5

###出力-###

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 して答えを取得し、出力します。

疑似コード

リーリー ###例###
    次は、2 つの数値のバイナリ表現の長さを等しくした後、XOR 値を計算する C プログラムです。
  • リーリー ###出力### リーリー

    分析

  • 時間計算量

    - O(log n) [対数]

  • count 関数の while ループにより、時間計算量は対数になります。
  • この数値はゼロになるまで 2 で除算されるため、計算量は log n 底 2 になります。

  • 空間複雑度

    - O(1) [定数]

  • プログラム内で余分なスペースが使用されないため、スペースの複雑さは一定です。
###結論は###

この記事では、2 つの数値のバイナリ表現の長さを等しくした後、その数値の XOR を計算する問題について説明しました。

XOR の概念について説明し、次に例と方法について説明しました。この方法では、末尾のゼロを使用してバイナリ表現のビット数を均等化します。この問題の疑似コードと C プログラムも確認しました。

以上が2 つの数値のバイナリ表現の長さが等しくなるように調整し、XOR 演算を実行します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。