For a better understanding, we always recommend you to learn the basic topics of C programming listed below:
In this C program, we use a Bitwise XOR operator to swap the numbers. Before starting, we need to know about the Bitwise operators. Bitwise operators works at the byte level, the basic unit of a memory that is addressable. The leading bitwise operators are Bitwise AND, OR, and NOT operators. Here we are using bitwise XOR, which is called Exclusive OR. XOR takes two inputs and returns one if any of the input is one. If both inputs are One or Zero, it returns a Zero.
Let the 'x' be 10 and 'y' be 5 so in Binary 'x' (1010) and 'y' (0101) then we use 'x = x ^ y' and 'x' now becomes 15 (1111). now we apply y = x ^ y, then 'y' becomes 10 (1010). Finally, we apply x = x ^ y to make 'x' becomes 5 (0101). The result of Bitwise XOR Operator is one if corresponding bits of two Operands are opposite. The result of the XOR operator is 0 if the corresponding bits of two operands are the same. Let's take a simple example to understand more about this.
10 - 1010 (in binary)
13 - 1101 (in binary)
Then the XOR operation of 12 and 25 is 0111 0111 - 7 (in decimal).
The logic of this program is first to Declare two variables 'i' and j'.Then accept the Integer numbers from the user and display them. Then Swap the Numbers using XOR Operator. Then display the numbers using the printf
function.
STEP 1: Include the header files to use the built-in functions in the C program.
STEP 2: Declare the variables 'i, k as an integer.
STEP 3: Read two integers from the user and store them into the variables 'i' and 'k'.
STEP 4: Display the integers as the number before Swapping using the printf
function.
STEP 5: Swap the numbers like 'i = i^k', 'k = i^k', and 'i= i^k'.
STEP 6: Display, After Swapping the numbers are 'i' and 'k'.
#include <stdio.h>
void main() {
long i, k;
printf("Enter two integers\n");
scanf("%ld %ld", & i, & k);
printf("\nBefore swapping i= %ld and k = %ld", i, k);
i = i ^ k; /* swap the numbers as we discussed in the logic part */
k = i ^ k;
i = i ^ k;
printf("\nAfter swapping i= %ld and k = %ld", i, k); /* prints the swapped numbers */
}
Enter two integers 12 13 Before swapping i= 12 and k = 13 After swapping i= 13 and k = 12