# Decimal to Binary Conversion program

• 01-12-2006
acidbeat311
Decimal to Binary Conversion program
Hello, I wrote this program for my Intro to Digital Systems class to convert a base 10 number into a Binary base 2 number string. It works perfectly except for some numbers it slams a number in front of it. On linux this number is -1073742772. Such a number is 60.
Code:

```#include <stdio.h> int main() {         int input=0;         int count=0;         int binary_backwards[32];         int binary_string[32];         int i=0;         int j=0;         printf("Enter a base 10 positive number to convert to binary:");         scanf("%i", &input);         while(input >0 && count<32)         {                        binary_backwards[count] = input %2;                 input /=2;                 count++;         }         while(count >-1)         {                 binary_string[i]=binary_backwards[count];                 count--;                 i++;         }                 while(j<i)         {                 printf("%i", binary_string[j]);                 j++;         }         return 0; }```
Anyone have any ideas why this is happening?
• 01-12-2006
Rashakil Fol
You incremented count after inserting your last binary digit into binary_backwards.
• 01-12-2006
quzah
You should also consider not using fixed numbers (32), and instead consider using provided limits instead:
Code:

```#include<limits.h> ... for( x = 0; x < sizeof( int ) * CHAR_BIT; x++ )     ...```
This will ensure that it works correctly for say, old crappy DOS compilers that most people around here seem to use. ;)

Quzah.
• 01-12-2006
peterchen
here is what i would do to fix it

replace the code below which is in your program
Code:

```while(count >-1) {     binary_string[i]=binary_backwards[count];     count--;     i++; } while(j<i) {     printf("%i", binary_string[j]);     j++; }```
with this

Code:

```while ((--count) > -1)     printf("%d", binary_backwards[count]) ;```
hence you can also get rid of
Code:

```int binary_string[32]; int i=0; int j=0;```
i'm new to c aswell hope i've been a help.
• 01-12-2006
logicwonder
You can do this in more simpler!
• 01-12-2006
Dave_Sinkula
A different tack:
Code:

```#include <stdio.h> void dectobin(int value) {   if ( value )   {       dectobin(value / 2);       printf("%d", value % 2);   } } int main(void) {   dectobin(12345);   putchar('\n');   dectobin(60);   putchar('\n');   return 0; } /* my output 11000000111001 111100 */```