ホームページ  >  記事  >  Java  >  Java では、サイズ 4 のグループを使用して要素に対してさまざまな XOR 演算を使用して配列を検索します。

Java では、サイズ 4 のグループを使用して要素に対してさまざまな XOR 演算を使用して配列を検索します。

WBOY
WBOY転載
2023-08-26 10:45:071196ブラウズ

Java では、サイズ 4 のグループを使用して要素に対してさまざまな XOR 演算を使用して配列を検索します。

次の文を中国語に翻訳し、HTML コードを保持します。新しいコンテンツを追加する必要はありません。

サイズ 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 演算後の結果 5 5 7 6 2 14 15 4

次のプログラムで使用されるメソッドは次のとおりです-

  • によると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 サイトの他の関連記事を参照してください。

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