How Bitwise Operators are Used, an Example Program

Well, one-by-one we’ve discussed each of the Bitwise
Operator
. Starting from Operation
on Bits and Bitwise Operators
, we moved on to Right/Left
Bit Shift Operators
then discussed Decimal
Number to Binary Conversion Program
. and at last One's
Complement and XOR Operators
. After having so much theoretical it’s
time now for a nice Example Program, which is the topic of today’s post.
The code here is basically to show how these bitwise operator are used rather
than what they are used for.



// Example Program to demonstrate how
// One's Complement (~) and XOR (^)
// Opeartors are used.
#include<stdio.h>

// prototype
void showbits(short int);

// defined
void showbits(short int dec_num)
{
short int loop, bit, and_mask;

for(loop=15; loop>=0; loop--)
{
and_mask=1<<loop;
bit=dec_num&and_mask;


if(bit==0) printf("0");
else printf("1");
}
}

void main()
{
// declare three short ints
// for storing user inputs
// and results
short int a,b,res;
int ch;

while(ch!=7)
{
// show main menu
printf("\t\tMain Menu\n");
printf("\t\t---------\n");
printf("1. Perform Left Bit Shift Operation\n");
printf("2. Perform Right Bit Shift Operation\n");
printf("3. Perform AND Operation\n");
printf("4. Perform OR Operation\n");
printf("5. Perform One's Complement Operation\n");
printf("6. Perform XOR Operation\n");
printf("7. Quit\n");
scanf("%d",&ch);

switch(ch)
{
case 1:
// take input
printf("\n\nEnter a decimal number: ");
scanf("%d",&a);
printf("\nEnter number of places to shift bit: ");
scanf("%d",&b);


printf("\n\n\tEntered Number: ");
showbits(a);
printf(" (decimal %d)",a);

// perform left bit shift
// operation
res=a<<b;

// show the formatted output
printf("\n\tLeft Shifted : ");
showbits(res);
printf(" (decimal %d)\n\n",res);

break;

case 2:
// take input
printf("\n\nEnter a decimal number: ");
scanf("%d",&a);
printf("\nEnter number of places to shift bit: ");
scanf("%d",&b);


printf("\n\n\tEntered Number: ");
showbits(a);
printf(" (decimal %d)",a);

// perform right bit shift
// operation
res=a>>b;

// show the formatted output
printf("\n\tRight Shifted : ");
showbits(res);
printf(" (decimal %d)\n\n",res);

break;

case 3:
printf("\n\nEnter two decimal number: ");
scanf("%d",&a);
scanf("%d",&b);

printf("\n\n\tEntered Number 1: ");
showbits(a);
printf(" (decimal %d)",a);
printf("\n\tEntered Number 2: ");
showbits(b);
printf(" (decimal %d)",b);

// perform AND operation on two
// variables a and b
res=a&b;

printf("\n\tAND'ed : ");
showbits(res);
printf(" (decimal %d)\n\n",res);

break;

case 4:
printf("\n\nEnter two decimal number: ");
scanf("%d",&a);
scanf("%d",&b);

printf("\n\n\tEntered Number 1: ");
showbits(a);
printf(" (decimal %d)",a);
printf("\n\tEntered Number 2: ");
showbits(b);
printf(" (decimal %d)",b);

// perform OR operation on two
// variables a and b
res=a|b;

printf("\n\tOR'ed : ");
showbits(res);
printf(" (decimal %d)\n\n",res);

break;

case 5:
// take input
printf("\n\nEnter a decimal number: ");
scanf("%d",&a);

printf("\n\n\tEntered Number: ");
showbits(a);
printf(" (decimal %d)",a);

// perform one's complement
// operation
res=~a;

// show the formatted output
printf("\n\t~'ed : ");
showbits(res);
printf(" (decimal %d)\n\n",res);

break;

case 6:
printf("\n\nEnter two decimal number: ");
scanf("%d",&a);
scanf("%d",&b);

printf("\n\n\tEntered Number 1: ");
showbits(a);
printf(" (decimal %d)",a);
printf("\n\tEntered Number 2: ");
showbits(b);
printf(" (decimal %d)",b);

// perform XOR operation on two
// variables a and b
res=a^b;

printf("\n\tXOR'ed : ");
showbits(res);
printf(" (decimal %d)\n\n",res);

break;

}
}
}


Test Run:


   Main Menu
---------
1. Perform Left Bit Shift Operation
2. Perform Right Bit Shift Operation
3. Perform AND Operation
4. Perform OR Operation
5. Perform One's Complement Operation
6. Perform XOR Operation
7. Quit
1


Enter a decimal number: 3476
Enter number of places to shift bit: 3


Entered Number: 0000110110010100 (decimal 3476)
Left Shifted : 0110110010100000 (decimal 27808)

   Main Menu
---------
1. Perform Left Bit Shift Operation
2. Perform Right Bit Shift Operation
3. Perform AND Operation
4. Perform OR Operation
5. Perform One's Complement Operation
6. Perform XOR Operation
7. Quit
2


Enter a decimal number: 543
Enter number of places to shift bit: 5


Entered Number: 0000001000011111 (decimal 543)
Right Shifted : 0000000000010000 (decimal 16)

   Main Menu
---------
1. Perform Left Bit Shift Operation
2. Perform Right Bit Shift Operation
3. Perform AND Operation
4. Perform OR Operation
5. Perform One's Complement Operation
6. Perform XOR Operation
7. Quit
7
Press any key to continue...

Related Articles:


Check out this stream