Método reverseBytes de la clase Long en Java

JavaJavaBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderemos sobre el método reverseBytes() de la clase Long de Java, que se utiliza para invertir el orden de los bytes de la representación binaria de complemento a dos del valor long pasado.

Crear una clase Java

Primero, necesitamos crear una clase Java en el directorio ~/proyecto. Llamémosla ReverseBytesDemo.java.

public class ReverseBytesDemo {

}

Agregar el método principal

A continuación, necesitamos agregar el método main a nuestra clase. Este será el punto de entrada de nuestro programa.

public static void main(String[] args) {

}

Usando el método reverseBytes()

Ahora, usemos el método reverseBytes() para invertir los bytes de un valor long.

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

System.out.println("Valor original: " + a);
System.out.println("Valor invertido: " + reversedValue);

Este código imprimirá:

Valor original: 342
Valor invertido: 6197234562238513152

Usando la entrada del usuario

También podemos tomar la entrada del usuario e invertir los bytes del valor de entrada. Modifiquemos nuestro código para tomar la entrada del usuario.

Scanner scanner = new Scanner(System.in);

System.out.print("Ingrese un número: ");
long userInput = scanner.nextLong();

long reversedValue = Long.reverseBytes(userInput);

System.out.println("Valor original: " + userInput);
System.out.println("Valor invertido: " + reversedValue);

Este código le pide al usuario que ingrese un número y luego invierte los bytes del valor de entrada. Ejecute el código usando el comando javac ReverseBytesDemo.java && java ReverseBytesDemo.

Manejo de excepciones

Podemos manejar cualquier excepción que pueda ocurrir al tomar la entrada del usuario mediante un bloque try-catch.

Scanner scanner = new Scanner(System.in);

try {
    System.out.print("Ingrese un número: ");
    long userInput = scanner.nextLong();

    long reversedValue = Long.reverseBytes(userInput);

    System.out.println("Valor original: " + userInput);
    System.out.println("Valor invertido: " + reversedValue);
} catch (InputMismatchException e) {
    System.out.println("Entrada no válida. Por favor, ingrese un número válido.");
}

Este código utiliza un bloque try-catch para manejar cualquier excepción que pueda ocurrir cuando el usuario ingrese una entrada no válida.

Prueba con un valor negativo

Vamos a probar el método reverseBytes() con un número negativo.

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

System.out.println("Valor original: " + a);
System.out.println("Valor invertido: " + reversedValue);

Este código imprimirá:

Valor original: -23
Valor invertido: -1585267068834414593

Salida de la representación binaria

También podemos mostrar la representación binaria de los valores original e invertido usando el método Long.toBinaryString().

System.out.println("Valor original en binario: " + Long.toBinaryString(a));
System.out.println("Valor invertido en binario: " + Long.toBinaryString(reversedValue));

Este código imprimirá:

Valor original en binario: 1111111111111111111111111111111111111111111111111111111111101001
Valor invertido en binario: 1010101100000000000000000000000000000000000000000000000000000000

Tenga en cuenta que la representación binaria del valor invertido es la representación binaria original con cada grupo de 8 bits invertido.

Usando una función definida por el usuario

Vamos a escribir una función definida por el usuario para encapsular el 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("Ingrese un número: ");
            long userInput = scanner.nextLong();

            long reversedValue = reverseBytes(userInput);

            System.out.println("Valor original: " + userInput);
            System.out.println("Valor invertido: " + reversedValue);

            System.out.println("Valor original en binario: " + Long.toBinaryString(userInput));
            System.out.println("Valor invertido en binario: " + Long.toBinaryString(reversedValue));

        } catch (InputMismatchException e) {
            System.out.println("Entrada no válida. Por favor, ingrese un número válido.");
        }

    }
}

Ejecución de la función definida por el usuario

Ahora que tenemos nuestra función definida por el usuario configurada, podemos probarla volviendo a ejecutar el método main() modificado.

Scanner scanner = new Scanner(System.in);

try {
    System.out.print("Ingrese un número: ");
    long userInput = scanner.nextLong();

    long reversedValue = reverseBytes(userInput);

    System.out.println("Valor original: " + userInput);
    System.out.println("Valor invertido: " + reversedValue);

    System.out.println("Valor original en binario: " + Long.toBinaryString(userInput));
    System.out.println("Valor invertido en binario: " + Long.toBinaryString(reversedValue));

} catch (InputMismatchException e) {
    System.out.println("Entrada no válida. Por favor, ingrese un número válido.");
}

Ejecute el código usando el comando javac ReverseBytesDemo.java && java ReverseBytesDemo.

Resumen

En este laboratorio, aprendimos sobre el método reverseBytes() de la clase Long en Java, que se utiliza para invertir el orden de los bytes de la representación binaria de complemento a dos del valor long pasado. También aprendimos cómo usar la entrada del usuario, manejar excepciones, mostrar la representación binaria y encapsular el método en una función definida por el usuario. Siguiendo estos pasos, ahora deberías poder usar el método reverseBytes() en tus propios programas Java.