Метод reverseBytes класса Long в Java

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

Введение

В этом практическом занятии мы узнаем о методе reverseBytes() класса Long в Java, который используется для обратного порядка байтов в двоичном представлении в дополнительном коде значения long, которое передается в качестве аргумента.

Создайте класс Java

Во - первых, нам нужно создать класс на Java в директории ~/project. Назовем его ReverseBytesDemo.java.

public class ReverseBytesDemo {

}

Добавьте метод main

Далее, нам нужно добавить метод main в наш класс. Это будет точка входа в нашу программу.

public static void main(String[] args) {

}

Использование метода reverseBytes()

Теперь давайте используем метод reverseBytes() для обращения порядка байтов значения long.

long a = 342;
long reversedValue = Long.reverseBytes(a);

System.out.println("Original value: " + a);
System.out.println("Reversed value: " + reversedValue);

Этот код выведет:

Original value: 342
Reversed value: 6197234562238513152

Использование ввода пользователя

Мы также можем получать ввод от пользователя и обращать порядок байтов введенного значения. Давайте модифицируем наш код для получения ввода от пользователя.

Scanner scanner = new Scanner(System.in);

System.out.print("Enter a number: ");
long userInput = scanner.nextLong();

long reversedValue = Long.reverseBytes(userInput);

System.out.println("Original value: " + userInput);
System.out.println("Reversed value: " + reversedValue);

Этот код запрашивает у пользователя ввести число и затем обращает порядок байтов введенного значения. Запустите код с помощью команды javac ReverseBytesDemo.java && java ReverseBytesDemo.

Обработка исключений

Мы можем обрабатывать любые исключения, которые могут возникнуть при получении ввода от пользователя, используя блок try-catch.

Scanner scanner = new Scanner(System.in);

try {
    System.out.print("Enter a number: ");
    long userInput = scanner.nextLong();

    long reversedValue = Long.reverseBytes(userInput);

    System.out.println("Original value: " + userInput);
    System.out.println("Reversed value: " + reversedValue);
} catch (InputMismatchException e) {
    System.out.println("Invalid input. Please enter a valid number.");
}

Этот код использует блок try-catch для обработки любых исключений, которые могут возникнуть, когда пользователь вводит недопустимые данные.

Тестирование отрицательного значения

Протестируем метод reverseBytes() с отрицательным числом.

long a = -23;
long reversedValue = Long.reverseBytes(a);

System.out.println("Original value: " + a);
System.out.println("Reversed value: " + reversedValue);

Этот код выведет:

Original value: -23
Reversed value: -1585267068834414593

Вывод двоичного представления

Мы также можем вывести двоичное представление исходного и обратного значений с использованием метода Long.toBinaryString().

System.out.println("Original value in binary: " + Long.toBinaryString(a));
System.out.println("Reversed value in binary: " + Long.toBinaryString(reversedValue));

Этот код выведет:

Original value in binary: 1111111111111111111111111111111111111111111111111111111111101001
Reversed value in binary: 1010101100000000000000000000000000000000000000000000000000000000

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

Использование пользовательской функции

Напишем пользовательскую функцию для упаковки метода reverseBytes().

public class ReverseBytesDemo {

    public static long reverseBytes(long value) {
        return Long.reverseBytes(value);
    }

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        try {
            System.out.print("Enter a number: ");
            long userInput = scanner.nextLong();

            long reversedValue = reverseBytes(userInput);

            System.out.println("Original value: " + userInput);
            System.out.println("Reversed value: " + reversedValue);

            System.out.println("Original value in binary: " + Long.toBinaryString(userInput));
            System.out.println("Reversed value in binary: " + Long.toBinaryString(reversedValue));

        } catch (InputMismatchException e) {
            System.out.println("Invalid input. Please enter a valid number.");
        }

    }
}

Запуск пользовательской функции

Теперь, когда у нас настроена наша пользовательская функция, мы можем протестировать ее, запустив снова модифицированный метод main().

Scanner scanner = new Scanner(System.in);

try {
    System.out.print("Enter a number: ");
    long userInput = scanner.nextLong();

    long reversedValue = reverseBytes(userInput);

    System.out.println("Original value: " + userInput);
    System.out.println("Reversed value: " + reversedValue);

    System.out.println("Original value in binary: " + Long.toBinaryString(userInput));
    System.out.println("Reversed value in binary: " + Long.toBinaryString(reversedValue));

} catch (InputMismatchException e) {
    System.out.println("Invalid input. Please enter a valid number.");
}

Запустите код с помощью команды javac ReverseBytesDemo.java && java ReverseBytesDemo.

Резюме

В этом практическом занятии мы изучили метод reverseBytes() класса Long в Java, который используется для обращения порядка байтов в двоичном представлении с дополнительным кодом для переданного значения long. Мы также узнали, как использовать ввод пользователя, обрабатывать исключения, выводить двоичное представление и упаковывать метод в пользовательскую функцию. Следуя этим шагам, вы теперь должны быть в состоянии использовать метод reverseBytes() в своих собственных Java-программах.