Please read Operation
on Bits and Bitwise Operators and Right/Left
Bit Shift Operators if you haven’t already. This post is based
on those articles.
We’ll be using the following operators and the respective properties
for decimal to binary conversion:
-
AND (&) Operator from the article Operation
on Bits and Bitwise Operators: Its property to be able to check
whether a particular bit is ON (1) or OFF (0).
-
Left Bit Shift Operator (<<) from the article Right/Left
Bit Shift Operators: Its property to shift bits (of byte(s)) to
desired number of places to the left.
After making you guys familiar with the two things above, the program will
be easier to understand.
// Example Program to convert decimal number
// to binary equivalent.
// --------
// Function: We have defined a function showbits()
// It shows the bit structure of the
// Short Int(2 Bytes) passed as argument
#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");
}
printf("
");
}
//main code to show how showbits()
// is working
void main()
{
short int dec;
printf("Enter a decimal number:");
scanf("%d",&dec);
showbits(dec);
}
I’m leaving its working part as an exercise for you guys.
Ha-ha! Not happy?
Ok, I’ll give you a hint, in the line…
and_mask = 1 >> loop;
Binary of 1 is 0000000000000001 (in two byte format) which is shifted 15 bits
to the left, in the first iteration.
Related Articles:
-
Right/Left
Bit Shift Operators
-
Operation
on Bits and Bitwise Operators
-
-
Problems
on Operator Overloading II
-
Class
with all the Overloaded Arithmetic Operators