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.

About the Author

Leave a Reply