Ad

Friday, March 14, 2008

Decimal Number to Binary Conversion Program

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:

  1. 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).

  2. 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:

1 comment:

  1. Anonymous11:14 AM

    "write a program to accept a decimal number from the user and convert it to its binary equivalent

    ReplyDelete

You are free to comment anything, although you can comment as 'Anonymous' it is strongly recommended that you supply your name. Thank You.

Please don't use abusive language.