サイズ N (4 の倍数のサイズ) の整数配列が与えられているので、次のようにする必要があります。 input[1-4] が次のようになるように配列に対して XOR 演算を実行します。 utility_arr[1-4] と計算条件は if arr[1 – 4] = {a1, a2, a3, a4} 次に、q[1 – 4] = {a1 ⊕ a2 ⊕ a3, a1 ⊕ a2 ⊕ a4, a1 ⊕ a3 ⊕ a4, a2 ⊕ a3 ⊕ a4}
この状況のさまざまな入力を見てみましょう。 出力シナリオ-
In − int[] input = { 5, 2, 3, 4 };
Out − XOR 結果演算後 4 3 2 5
説明-XOR ゲートの出力は、その 2 つの入力端子が「異なる」論理レベルにある場合にのみ「ハイ」になります。入力 A と B の両方が論理レベル「1」または「0」の場合、出力は「0」になり、ゲートは「偶数ゲートではなく奇数ゲート」になります。つまり、入力に 1 が奇数個ある場合、出力は「1」になります。
a1 ⊕ a2 ⊕ a3 = 5 ⊕ 2 ⊕ 3 = 4
a1 ⊕ a2 ⊕ a4 = 5 ⊕ 2 ⊕ 4 = 3
a1 ⊕ a3 ⊕ a4 = 5⊕ 3 ⊕ 4 = 2
a2 ⊕ a3 ⊕ a4 = 2 ⊕ 3 ⊕ 4 = 5
In − int[] input = { 7, 6, 4, 4, 3, 8, 9, 5 };
Out − XOR 演算後の結果 5 5 7 6 2 14 15 4
説明 - XOR ゲートの出力は、その 2 つの入力端子が互いに「異なる」論理レベルにある場合にのみ「ハイ」になります。入力 A と B の両方が論理レベル「1」または「0」の場合、出力は「0」になり、ゲートは「偶数ゲートではなく奇数ゲート」になります。つまり、入力に 1 が奇数個ある場合、出力は「1」になります。 input[] サイズが 4 の倍数である場合にのみ機能します。他のサイズの入力配列では、奇数の位置に数値の代わりに 0 が表示されます。
によるとXOR a ⊕ a = 0 および a ⊕ 0 = a のプロパティ。 (a ⊕ b ⊕ c) ⊕ (b ⊕ c ⊕ d) = a ⊕ d (As (b ⊕ c) ⊕ (b ⊕ c) = 0)
For計算 配列を 4 つのグループに分割し、XOR の性質に従って各グループの結果を計算します。
上記のプロパティを参照すると、(a ⊕ d) を使用して b と c を計算できます。 (a ⊕ b ⊕ d) ⊕ (a ⊕ d) = b (a ⊕ c ⊕ d) ⊕ (a ⊕ d) = c
b と c を使用すると、次のようにして a と d を取得できます。 (a ⊕ b ⊕ c) ⊕ (b) ⊕ (c) = a (b ⊕ c ⊕ d) ⊕ (b) ⊕ (c) = d
4 つのグループすべてに対してプロセスを繰り返します
Use 2ポインタ i と j は、配列の長さが 4 で割られるまでループを繰り返し、一時的な値 (ans) とユーティリティ配列 (答えを保存するため) を導入します。
for ループで次の XOR 演算を実装します。
ans= input array[i] ⊕ input array[i 3]
Utility array [ i 1] (b を計算) = 入力配列 [i 1] ⊕ ans
実際の配列 [i 2] (c を計算) = 入力配列 [i 2] ⊕ ans
実際の配列 [ i](a を計算) = 入力配列[i]⊕((ユーティリティ配列[i 1])^(ユーティリティ配列[i 2]))
ユーティリティ配列[i](dを計算))= 入力array[i 3] ⊕ ((Utility array[i 1]) ^ (Utility array[i 2]))
そしてポインタは次の 4 文字のセットに更新されます
import java.util.Arrays; import java.util.List; public class Tutorials{ static int ans = 0; public static void main(String args[]){ int[] input = {7, 1, 2, 3}; int[] arr = new int[input.length]; for (int i = 0, j = 0; j < input.length / 4; j++){ ans = input[i] ^ input[i + 3]; arr[i + 1] = input[i + 1] ^ ans; arr[i + 2] = input[i + 2] ^ ans; arr[i] = input[i] ^ ((arr[i + 1]) ^ (arr[i + 2])); arr[i + 3] = input[i + 3] ^ (arr[i + 1] ^ arr[i + 2]); i += 4; } System.out.println("Different XORs of elements in groups of size 4 is: "); for (int i = 0; i < arr.length; i++){ System.out.println(arr[i]); } } }
Different XORs of elements in groups of size 4 is : 4 5 6 0
以上がJava では、サイズ 4 のグループを使用して要素に対してさまざまな XOR 演算を使用して配列を検索します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。