Introdução
Neste laboratório, aprenderemos sobre o método Java reverseBytes() da classe Long, que é usado para inverter a ordem dos bytes da representação binária de complemento de dois do valor long passado.
Neste laboratório, aprenderemos sobre o método Java reverseBytes() da classe Long, que é usado para inverter a ordem dos bytes da representação binária de complemento de dois do valor long passado.
Primeiramente, precisamos criar uma classe Java no diretório ~/project. Vamos chamá-la de ReverseBytesDemo.java.
public class ReverseBytesDemo {
}
Em seguida, precisamos adicionar o método main à nossa classe. Este será o ponto de entrada para o nosso programa.
public static void main(String[] args) {
}
Agora, vamos usar o método reverseBytes() para inverter os bytes de um valor long.
long a = 342;
long reversedValue = Long.reverseBytes(a);
System.out.println("Original value: " + a);
System.out.println("Reversed value: " + reversedValue);
Este código irá exibir:
Original value: 342
Reversed value: 6197234562238513152
Também podemos receber a entrada do usuário e inverter os bytes do valor inserido. Vamos modificar nosso código para receber a entrada do usuário.
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);
Este código solicita ao usuário que insira um número e, em seguida, inverte os bytes do valor inserido. Execute o código usando o comando javac ReverseBytesDemo.java && java ReverseBytesDemo.
Podemos tratar quaisquer exceções que possam ocorrer ao receber entradas do usuário usando um bloco 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.");
}
Este código usa um bloco try-catch para tratar quaisquer exceções que possam ocorrer quando o usuário insere uma entrada inválida.
Vamos testar o método reverseBytes() com números negativos.
long a = -23;
long reversedValue = Long.reverseBytes(a);
System.out.println("Original value: " + a);
System.out.println("Reversed value: " + reversedValue);
Este código exibirá:
Original value: -23
Reversed value: -1585267068834414593
Também podemos exibir a representação binária dos valores originais e invertidos usando o método Long.toBinaryString().
System.out.println("Original value in binary: " + Long.toBinaryString(a));
System.out.println("Reversed value in binary: " + Long.toBinaryString(reversedValue));
Este código exibirá:
Original value in binary: 1111111111111111111111111111111111111111111111111111111111101001
Reversed value in binary: 1010101100000000000000000000000000000000000000000000000000000000
Observe que a representação binária do valor invertido é a representação binária original com cada grupo de 8 bits invertido.
Vamos escrever uma função definida pelo usuário para encapsular o método 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.");
}
}
}
Agora que configuramos nossa função definida pelo usuário, podemos testá-la executando o método main() modificado novamente.
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.");
}
Execute o código usando o comando javac ReverseBytesDemo.java && java ReverseBytesDemo.
Neste laboratório, aprendemos sobre o método reverseBytes() da classe Long em Java, que é usado para inverter a ordem dos bytes da representação binária de complemento de dois do valor long passado. Também aprendemos como usar a entrada do usuário, lidar com exceções, exibir a representação binária e encapsular o método em uma função definida pelo usuário. Seguindo estes passos, você agora deve ser capaz de usar o método reverseBytes() em seus próprios programas Java.