Linux C Programming Tutorial Part 14 – Bitwise operators practical examples
Linux C Programming Tutorial Part 14 – Bitwise operators practical examples
In one of our earlier articles, we discussed the basics of bitwise operators. I hope you went through that article and are now ready to witness and understand some practical usage examples of these operators. So without further ado, let’s begin.if(typeof __ez_fad_position != ‘undefined’){__ez_fad_position(‘div-gpt-ad-howtoforge_com-box-3-0’)};
1. Swap values of two variables
I am sure you’d aware of the logic to swap values of two variables. It involves taking a third variable to temporarily store one value and then assign that value to one of the variables (whose original value has already been assigned to the other variable).if(typeof __ez_fad_position != ‘undefined’){__ez_fad_position(‘div-gpt-ad-howtoforge_com-medrectangle-3-0’)};
For example, if ‘a’ and ‘b’ are variables whose values need to be swapped, and ‘c’ is the temporary variable, then here’s how the standard logic goes:
c = a;
a = b;
b = c;
But did you know this whole swapping process can be done through bitwise operators? Yes, that’s true, and the logic, in that case, doesn’t even require a third variable. Here’s the code:
#include <stdio.h>
int main()
{
int a, b;
printf("Enter first number: ");
scanf("%d", &a);
printf("Enter second number: ");
scanf("%d", &b);
printf("As per your input, a = %d, and b = %d", a,b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("\nAfter swapping, a = %d, and b = %d", a,b);
return 0;
}
Here’s the output:
Enter first number: 7
Enter second number: 2
As per your input, a = 7, and b = 2
After swapping, a = 2, and b = 7
2. Check number of binary ‘1’s in a number
Sometimes you may find yourself in a situation wherein you need to count the number of bits set to ‘1’ in a number. You’ll be glad to know you can easily do this using bitwise operators. Here’s the logic:
#include <stdio.h>
int main()
{
int a, num_of_bits = 0;
printf("Enter a number: ");
scanf("%d", &a);
while(a)
{
if(a & 1)
num_of_bits++;
a = a >> 1;
}
printf("\nNumber of binary 1s in this number is %d", num_of_bits);
return 0;
}
Here’s the output:
Enter a number: 5
Number of binary 1s in this number is 2
3. C program to check if given bit position is 1 or not
Sometimes, especially when working on a code that’s related to computer networking (protocols etc), you are required to check whether or not a particular bit position is set to 1 or not. This can easily be done using bitwise operators.
Here’s the code:
#include <stdio.h>
int main()
{
int num, position, temp;
printf("Enter a number: ");
scanf("%d", &num);
printf("Enter the bit position (keeping zero as base index and 31 as max): ");
scanf("%d", &position);
if(((num>>position)&1) == 1)
printf("\nBit at the position is 1");
else
printf("\nBit at the position is 0");
return 0;
}
Here’s the output:if(typeof __ez_fad_position != ‘undefined’){__ez_fad_position(‘div-gpt-ad-howtoforge_com-medrectangle-4-0’)};
Enter a number: 2
Enter the bit position (keeping zero as base index and 31 as max): 3
Bit at the position is 0
4. Convert decimal number to its binary form
Bitwise operators can also be used to convert a decimal number to its binary form. Here’s one logic for it:
#include <stdio.h>
int main()
{
int num, i = 0, temp = 0;
int bin[32] = {0}; // this will initialize all array elements to 0
/* Input number from user */
printf("Enter any number: ");
scanf("%d", &num);
for(i =31; i>=0; i--)
{
if((num & 1) == 1)
{
bin[i] = 1;
num = num>>1;
}
printf("The binary form of the number you entered is: ");
for(i=0; i<32; i++)
{
printf("%d",bin[i]);
}
return 0;
}
Here was the output in my case:
Enter any number: 15
The binary form of the number you entered is: 00000000000000000000000000001111
Conclusion
The four examples we’ve shown here should be enough to give you a good idea on how bitwise operators can be used in real-world scenarios. Try these out on your machines, tweak them, and make them do more, or something new. In case of any doubt or query, drop a comment here.