Opérateur XOR Bit-à-Bit en Java

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

L'opérateur XOR est un opérateur bit-à-bit utilisé en Java pour comparer les bits individuels des opérandes. En Java, l'opérateur XOR est représenté par le symbole de crochet (^). Il est utilisé pour comparer deux bits et renvoie true si et seulement si les deux bits comparés ne sont pas les mêmes.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java/BasicSyntaxGroup -.-> java/data_types("Data Types") java/BasicSyntaxGroup -.-> java/operators("Operators") java/BasicSyntaxGroup -.-> java/booleans("Booleans") java/BasicSyntaxGroup -.-> java/variables("Variables") java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/BasicSyntaxGroup -.-> java/output("Output") java/StringManipulationGroup -.-> java/strings("Strings") java/DataStructuresGroup -.-> java/arrays("Arrays") subgraph Lab Skills java/data_types -.-> lab-117997{{"Opérateur XOR Bit-à-Bit en Java"}} java/operators -.-> lab-117997{{"Opérateur XOR Bit-à-Bit en Java"}} java/booleans -.-> lab-117997{{"Opérateur XOR Bit-à-Bit en Java"}} java/variables -.-> lab-117997{{"Opérateur XOR Bit-à-Bit en Java"}} java/for_loop -.-> lab-117997{{"Opérateur XOR Bit-à-Bit en Java"}} java/output -.-> lab-117997{{"Opérateur XOR Bit-à-Bit en Java"}} java/strings -.-> lab-117997{{"Opérateur XOR Bit-à-Bit en Java"}} java/arrays -.-> lab-117997{{"Opérateur XOR Bit-à-Bit en Java"}} end

Utilisation de l'opérateur XOR avec les types de données primitifs

En Java, l'opérateur XOR peut être utilisé avec n'importe quel type de données primitif. Vérifions le tableau de vérité de l'opérateur XOR en utilisant des types de données primitifs.

public class XOR {
    public static void main(String[] args) {
        System.out.println("0 XOR 0: " + (0 ^ 0)); // Sortie : 0
        System.out.println("0 XOR 1: " + (0 ^ 1)); // Sortie : 1
        System.out.println("1 XOR 0: " + (1 ^ 0)); // Sortie : 1
        System.out.print("1 XOR 1: " + (1 ^ 1)); // Sortie : 0
    }
}

Pour exécuter le code, enregistrez-le dans le fichier ~/projet/XOR.java, puis exécutez les commandes suivantes dans le terminal :

cd ~/projet/
javac XOR.java
java XOR

Utilisation de l'opérateur XOR avec des valeurs booléennes

L'opérateur XOR peut également fonctionner avec des valeurs booléennes. Recréons le tableau en utilisant les booléens true et false.

public class XOR {
    public static void main(String[] args) {
        System.out.println("False XOR False: " + (false ^ false)); // Sortie : false
        System.out.println("False XOR True: " + (false ^ true)); // Sortie : true
        System.out.println("True XOR False: " + (true ^ false)); // Sortie : true
        System.out.print("True XOR True: " + (true ^ true)); // Sortie : false
    }
}

Pour exécuter le code, enregistrez-le dans le fichier ~/projet/XOR.java, puis exécutez les commandes suivantes dans le terminal :

cd ~/projet/
javac XOR.java
java XOR

Utilisation de l'opérateur XOR avec des valeurs entières

L'opérateur XOR peut être utilisé sur des entiers autres que 0 ou 1. L'opérateur XOR fonctionnera sur les bits individuels de l'équivalent binaire de l'entier.

public class XOR {
    public static void main(String[] args) {
        System.out.println("9 XOR 15: " + (9 ^ 15)); // Sortie : 6
        System.out.println("1 XOR 20: " + (1 ^ 20)); // Sortie : 21
        System.out.println("7 XOR 7: " + (7 ^ 7)); // Sortie : 0
        System.out.print("32 XOR 0: " + (32 ^ 0)); // Sortie : 32
    }
}

Pour exécuter le code, enregistrez-le dans le fichier ~/projet/XOR.java, puis exécutez les commandes suivantes dans le terminal :

cd ~/projet/
javac XOR.java
java XOR

Trouver l'entier non-répété en utilisant l'opérateur XOR

L'opérateur XOR peut également être utilisé pour trouver l'entier non-répété dans un tableau d'entiers.

public class XOR {
    public static int nonRepeatingInteger(int[] numArray) {
        int xor = numArray[0];
        for (int i = 1; i < numArray.length; i++)
            xor = xor ^ numArray[i];
        return xor;
    }

    public static void main(String[] args) {
        int[] arr = {10, 12, 5, 6, 10, 6, 12};
        int nonRepeatingNum = nonRepeatingInteger(arr);
        System.out.print("L'entier non-répété est : " + nonRepeatingNum);
    }
}

Pour exécuter le code, enregistrez-le dans le fichier ~/projet/XOR.java, puis exécutez les commandes suivantes dans le terminal :

cd ~/projet/
javac XOR.java
java XOR

La sortie sera :

L'entier non-répété est : 5

Trouver l'opérateur XOR de chaînes de caractères binaires

L'opérateur XOR ne fonctionne que pour les types de données primitifs. Cependant, nous pouvons écrire notre propre méthode qui utilise l'opérateur XOR et une logique supplémentaire pour trouver l'opérateur XOR de deux chaînes de caractères binaires.

public class XOR {
    public static String binaryStringXOR(String binStr1, String binStr2) {
        String xor = "";
        // ajout de zéros pour égaliser la longueur des deux chaînes
        if (binStr1.length() > binStr2.length()) {
            String temp = "";
            for (int i = 0; i < binStr1.length() - binStr2.length(); i++)
                temp += "0";
            binStr2 = temp + binStr2;
        } else if (binStr2.length() > binStr1.length()) {
            String temp = "";
            for (int i = 0; i < binStr2.length() - binStr1.length(); i++)
                temp += "0";
            binStr1 = temp + binStr1;
        }
        for (int i = 0; i < binStr1.length(); i++) {
            xor += binStr1.charAt(i) ^ binStr2.charAt(i);
        }
        return xor;
    }

    public static void main(String[] args) {
        System.out.println("1001 XOR 1111: " + binaryStringXOR("1001", "1111"));
        System.out.println("1 XOR 10100: " + binaryStringXOR("1", "10100"));
        System.out.println("0111 XOR 1: " + binaryStringXOR("0111", "1"));
        System.out.print("100000 XOR 0: " + binaryStringXOR("100000", "0"));
    }
}

Pour exécuter le code, enregistrez-le dans le fichier ~/projet/XOR.java, puis exécutez les commandes suivantes dans le terminal :

cd ~/projet/
javac XOR.java
java XOR

La sortie sera :

1001 XOR 1111: 0110
1 XOR 10100: 10101
0111 XOR 1: 0110
100000 XOR 0: 100000

Récapitulatif

Dans ce laboratoire, nous avons appris les concepts de base de l'opération XOR en Java. Nous avons démontré comment les opérateurs XOR peuvent être utilisés sur les types de données booléens et entiers. Nous avons également implémenté une méthode pour trouver l'opérateur XOR de deux chaînes de caractères binaires et une méthode pour trouver l'entier non-répété dans un tableau d'entiers.