Heim  >  Artikel  >  Java  >  Suchen Sie in Java ein Array mithilfe verschiedener XOR-Operationen für Elemente, die Gruppen der Größe 4 verwenden

Suchen Sie in Java ein Array mithilfe verschiedener XOR-Operationen für Elemente, die Gruppen der Größe 4 verwenden

WBOY
WBOYnach vorne
2023-08-26 10:45:071238Durchsuche

Suchen Sie in Java ein Array mithilfe verschiedener XOR-Operationen für Elemente, die Gruppen der Größe 4 verwenden

Übersetzen Sie den folgenden Satz ins Chinesische und behalten Sie den HTML-Code bei, ohne neuen Inhalt hinzuzufügen:

Wir erhalten ein Array von ganzen Zahlen der Größe N (Größe, die ein Vielfaches von 4 ist) und wir müssen Führt eine XOR-Operation für das Array aus, sodass Eingabe[1–4] wie folgt aussieht Utility_arr[1-4] und die Berechnungsbedingung sind if arr[1 – 4] = {a1, a2, a3, a4} Dann q[1 – 4] = {a1 ⊕ a2 ⊕ a3, a1 ⊕ a2 ⊕ a4, a1 ⊕ a3 ⊕ a4, a2 ⊕ a3 ⊕ a4}

Sehen wir uns die verschiedenen Eingabe- und Ausgabeszenarien dieser Situation an -

In − int[] input = { 5, 2, 3, 4 };

Out − Das Ergebnis nach der XOR-Operation 4 3 2 5

Erklärung−Der Ausgang des XOR-Gatters liegt nur in seinem The Zwei Eingangsanschlüsse gehen nur dann auf „High“, wenn sie sich auf „unterschiedlichen“ Logikpegeln befinden. Wenn beide Eingänge A und B auf dem Logikpegel „1“ oder „0“ liegen, ist der Ausgang „0“, wodurch das Gatter ein „ungerades Gatter, aber kein gerades Gatter“ ist. Mit anderen Worten: Wenn die Eingabe eine ungerade Anzahl von Einsen hat, ist die Ausgabe „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 − Das Ergebnis der XOR-Operation 5 5 7 6 2 14 15 4

Erklärung− Der Ausgang eines XOR-Gatters geht nur dann auf „High“, wenn seine beiden Eingangsanschlüsse auf „unterschiedlichen“ Logikpegeln voneinander liegen. Wenn beide Eingänge A und B auf dem Logikpegel „1“ oder „0“ liegen, ist der Ausgang „0“, wodurch das Gatter ein „ungerades Gatter, aber kein gerades Gatter“ ist. Mit anderen Worten: Wenn die Eingabe eine ungerade Anzahl von Einsen hat, ist die Ausgabe „1“. Funktioniert nur für Eingabegrößen[], die ein Vielfaches von 4 sind. Eingabearrays anderer Größen zeigen Nullen anstelle von Zahlen an ungeraden Positionen an.

Das Ergebnis nach der XOR-Operation 5 5 7 6 2 14 15 4

Die im folgenden Programm verwendete Methode ist wie folgt -

  • Gemäß den Eigenschaften von XOR a ⊕ a = 0 und a ⊕ 0 = a. (a ⊕ b ⊕ c) ⊕ (b ⊕ c ⊕ d) = a ⊕ d (As (b ​​​​⊕ c) ⊕ (b ⊕ c) = 0)

  • Für die Berechnung wird das Array unterteilt in 4 Gruppen, wir Die Ergebnisse für jede Gruppe werden gemäß den XOR-Eigenschaften berechnet.

  • Unter Bezugnahme auf die oben genannten Eigenschaften können wir mit (a ⊕ d) b und c berechnen (a ⊕ b ⊕ d) ⊕ (a ⊕ d) = b (a ⊕ c ⊕ d) ⊕ (a ⊕ d) = c

  • Durch die Verwendung von b und c können wir a und d mithilfe von erhalten (a ⊕ b ⊕ c) ⊕ (b) ⊕ (c) = a (b ⊕ c ⊕ d) ⊕ (b) ⊕ (c) = d

  • Wiederholen Sie den Vorgang für alle vier Gruppen

  • Iterieren Sie die Schleife mit zwei Zeigern i und j, bis die Länge des Arrays durch geteilt ist Viertens und führen Sie temporäre Werte (ans) und Utility-Arrays (zum Speichern von Antworten) ein.

  • Implementieren Sie die folgende XOR-Operation innerhalb der for-Schleife

    ans= Eingabearray[i] ⊕ Eingabearray[i+3]

    Utility-Array[i+1](berechne b)= Eingabearray[i+ 1] ⊕ ans

    utility array[i+2](calculate c)=input array[i+2] ⊕ ans

    utility array[i](calculate a)=input array[i]⊕((utility array[ i + 1]) ^ (Utility-Array [i + 2]))

    Utility-Array [i] (berechne d) ) = Eingabe-Array [i + 3] ⊕ ((Utility-Array [i + 1]) ^ (Utility-Array[ i + 2]))

  • und der Zeiger wird für den nächsten Satz von vier Zeichen aktualisiert

  • Schließlich wird das Array gedruckt und das Ergebnis an den Benutzer zurückgegeben.

Beispiel

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]);
      }
   }
}

Ausgabe

Wenn wir den obigen Code ausführen, wird die folgende Ausgabe generiert

Different XORs of elements in groups of size 4 is :
4
5
6
0

Das obige ist der detaillierte Inhalt vonSuchen Sie in Java ein Array mithilfe verschiedener XOR-Operationen für Elemente, die Gruppen der Größe 4 verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen