Saturday, March 15, 2008

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)
{

for(loop=15; loop>=0; loop--)
{

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)
{
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: