Оператор XOR побитового сдвига в Java

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Оператор XOR - это битовый оператор, используемый в Java для сравнения отдельных битов операндов. В Java оператор XOR представляется символом circumflex (^). Он используется для сравнения двух битов и возвращает true тогда и только тогда, когда два сравниваемых бита не совпадают.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) 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{{"Оператор XOR побитового сдвига в Java"}} java/operators -.-> lab-117997{{"Оператор XOR побитового сдвига в Java"}} java/booleans -.-> lab-117997{{"Оператор XOR побитового сдвига в Java"}} java/variables -.-> lab-117997{{"Оператор XOR побитового сдвига в Java"}} java/for_loop -.-> lab-117997{{"Оператор XOR побитового сдвига в Java"}} java/output -.-> lab-117997{{"Оператор XOR побитового сдвига в Java"}} java/strings -.-> lab-117997{{"Оператор XOR побитового сдвига в Java"}} java/arrays -.-> lab-117997{{"Оператор XOR побитового сдвига в Java"}} end

Использование оператора XOR с примитивными типами данных

В Java оператор XOR можно использовать с любым примитивным типом данных. Проверим таблицу истинности XOR, используя примитивные типы данных.

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

Для запуска кода сохраните его в файл ~/project/XOR.java и выполните следующие команды в терминале:

cd ~/project/
javac XOR.java
java XOR

Использование оператора XOR с логическими значениями

Оператор XOR также может работать с логическими значениями. Создадим таблицу, используя логические значения true и false.

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

Для запуска кода сохраните его в файл ~/project/XOR.java и выполните следующие команды в терминале:

cd ~/project/
javac XOR.java
java XOR

Использование оператора XOR с целочисленными значениями

Оператор XOR можно использовать с целыми числами, которые не равны 0 или 1. Оператор XOR будет работать с отдельными битами двоичного эквивалента целого числа.

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

Для запуска кода сохраните его в файл ~/project/XOR.java и выполните следующие команды в терминале:

cd ~/project/
javac XOR.java
java XOR

Поиск неповторяющегося целого числа с использованием оператора XOR

Оператор XOR также можно использовать для поиска неповторяющегося целого числа в массиве целых чисел.

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("The non-repeating integer is: " + nonRepeatingNum);
    }
}

Для запуска кода сохраните его в файл ~/project/XOR.java и выполните следующие команды в терминале:

cd ~/project/
javac XOR.java
java XOR

Вывод будет таким:

The non-repeating integer is: 5

Поиск XOR двоичных строк

Оператор XOR работает только с примитивными типами данных. Однако, мы можем написать свой собственный метод, который будет использовать оператор XOR и некоторую дополнительную логику для нахождения XOR двух двоичных строк.

public class XOR {
    public static String binaryStringXOR(String binStr1, String binStr2) {
        String xor = "";
        // добавление нулей, чтобы сделать две строки одинаковой длины
        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"));
    }
}

Для запуска кода сохраните его в файл ~/project/XOR.java и выполните следующие команды в терминале:

cd ~/project/
javac XOR.java
java XOR

Вывод будет таким:

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

Резюме

В этом практическом занятии мы изучили основные концепции операции XOR в Java. Мы показали, как операторы XOR могут быть использованы с логическими и целочисленными типами данных. Мы также реализовали метод для нахождения XOR двух двоичных строк и метод для нахождения неповторяющегося целого числа в массиве целых чисел.