Maison  >  Article  >  Java  >  En Java, recherchez un tableau en utilisant différentes opérations XOR sur des éléments en utilisant des groupes de taille 4

En Java, recherchez un tableau en utilisant différentes opérations XOR sur des éléments en utilisant des groupes de taille 4

WBOY
WBOYavant
2023-08-26 10:45:071238parcourir

En Java, recherchez un tableau en utilisant différentes opérations XOR sur des éléments en utilisant des groupes de taille 4

Traduisez la phrase suivante en chinois et conservez le code html sans ajouter de nouveau contenu :

On nous donne un tableau d'entiers de taille N (taille multiple de 4) et nous devons Effectue une opération XOR sur le tableau afin que l'entrée [1- 4] ressemble à utility_arr[1- 4] et la condition de calcul sont si arr[1 – 4] = {a1, a2, a3, a4} Alors q[1 – 4] = {a1 ⊕ a2 ⊕ a3, a1 ⊕ a2 ⊕ a4, a1 ⊕ a3 ⊕ a4, a2 ⊕ a3 ⊕ a4}

Voyons les différents scénarios d'entrée et de sortie de cette situation -

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

Out − Le résultat après l'opération XOR 4 3 2 5

Explication−La sortie de la porte XOR est uniquement dans son Le deux bornes d'entrée ne passent à "haut" que lorsqu'elles sont à des niveaux logiques "différents". Si les deux entrées A et B sont au niveau logique « 1 » ou « 0 », la sortie est « 0 », faisant de la porte une « porte impaire mais pas paire ». En d’autres termes, lorsque l’entrée a un nombre impair de 1, la sortie est « 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 − Le résultat de l'opération XOR 5 5 7 6 2 14 15 4

Explication− La sortie d'une porte XOR ne passe "haute" que lorsque ses deux bornes d'entrée sont à des niveaux logiques "différents" l'un de l'autre. Si les deux entrées A et B sont au niveau logique « 1 » ou « 0 », la sortie est « 0 », faisant de la porte une « porte impaire mais pas paire ». En d’autres termes, lorsque l’entrée a un nombre impair de 1, la sortie est « 1 ». Fonctionne uniquement pour les tailles input[] qui sont un multiple de 4, les tableaux d'entrée d'autres tailles afficheront des 0 à la place des nombres dans des positions impaires.

Le résultat après l'opération XOR 5 5 7 6 2 14 15 4

La méthode utilisée dans le programme suivant est la suivante -

  • Selon les propriétés de XOR a ⊕ a = 0 et a ⊕ 0 = a. (a ⊕ b ⊕ c) ⊕ (b ⊕ c ⊕ d) = a ⊕ d (As (b ​​​​⊕ c) ⊕ (b ⊕ c) = 0)

  • Pour le calcul, le tableau est divisé en 4 groupes, nous Les résultats pour chaque groupe seront calculés en fonction des propriétés XOR.

  • En nous référant aux propriétés ci-dessus, en utilisant (a ⊕ d) nous pouvons calculer b et c (une ⊕ b ⊕ d) ⊕ (une ⊕ d) = b (a ⊕ c ⊕ d) ⊕ (a ⊕ d) = c

  • En utilisant b et c, nous pouvons obtenir a et d en utilisant (une ⊕ b ⊕ c) ⊕ (b) ⊕ (c) = une (b ⊕ c ⊕ d) ⊕ (b) ⊕ (c) = d

  • Répétez le processus pour les quatre groupes

  • Parcourez la boucle en utilisant 2 pointeurs i et j jusqu'à ce que la longueur du tableau soit divisée par quatre, et introduisez des valeurs temporaires (ans) et des tableaux utilitaires (pour stocker les réponses).

  • Implémentez l'opération XOR suivante dans la boucle for

    ans= input array[i] ⊕ input array[i+3]

    utility array[i+1](calculate b)= input array[i+ 1] ⊕ ans

    tableau d'utilité[i+2](calculer c)=tableau d'entrée[i+2] ⊕ ans

    tableau d'utilité[i](calculer a)=tableau d'entrée[i]⊕((tableau d'utilité[i + 1]) ^ (tableau utilitaire [i + 2]))

    tableau utilitaire [i] (calculer d) ) = tableau d'entrée [i + 3] ⊕ ((tableau utilitaire [i + 1]) ^ (tableau utilitaire [ i + 2]))

  • et le pointeur est mis à jour pour le prochain ensemble de quatre caractères

  • Enfin, le tableau est imprimé et le résultat est renvoyé à l'utilisateur.

Exemple

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

Output

Si nous exécutons le code ci-dessus, la sortie suivante sera générée

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer