Método reverseBytes de Java Long

JavaBeginner
Pratique Agora

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.

Criar uma classe Java

Primeiramente, precisamos criar uma classe Java no diretório ~/project. Vamos chamá-la de ReverseBytesDemo.java.

public class ReverseBytesDemo {

}

Adicionar o método main

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) {

}

Usando o método reverseBytes()

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

Usando a entrada do usuário

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.

Tratamento de exceções

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.

Testando valores negativos

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

Exibindo representação binária

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.

Utilizando função definida pelo usuário

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.");
        }

    }
}

Executando função definida pelo usuário

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.

Resumo

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.