Este programa Java intercambia dos números utilizando el operador XOR bit a bit. Antes de pasar al programa, veamos qué es un operador XOR bit a bit: un XOR bit a bit compara los bits correspondientes de dos operandos y devuelve 1 si son iguales y 0 si no son iguales. Por ejemplo:
num1 = 11; /* equal to 00001011*/ num2 = 22; /* equal to 00010110 */
num1 ^ num2 compara los bits correspondientes de num1 y num2 y genera 1 si no son iguales, de lo contrario devuelve 0. En nuestro ejemplo, devolvería 29 que es equivalente a 00011101
Escribámoslo en un programa Java:
Ejemplo: intercambiar dos números usando el operador bit a bit
import java.util.Scanner; public class JavaExample { public static void main(String args[]) { int num1, num2; Scanner scanner = new Scanner(System.in); System.out.print("Enter first number:"); num1 = scanner.nextInt(); System.out.print("Enter second number:"); num2 = scanner.nextInt(); /* To make you understand, lets assume I am going * to enter value of first number as 10 and second * as 5. Binary equivalent of 10 is 1010 and 5 is * 0101 */ //num1 becomes 1111 = 15 num1 = num1 ^ num2; //num2 becomes 1010 = 10 num2 = num1 ^ num2; //num1 becomes 0101 = 5 num1 = num1 ^ num2; scanner.close(); System.out.println("The First number after swapping:"+num1); System.out.println("The Second number after swapping:"+num2); } }
Producción:
Enter first number:10 Enter second number:5 The First number after swapping:5 The Second number after swapping:10