Введение
В этом практическом занятии мы узнаем о методе 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-программах.



