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("\n");
}
//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: