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: