# Thread: Decimal to Binary Conversion program

1. ## 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?

2. You incremented count after inserting your last binary digit into binary_backwards.

3. 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.

4. 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.

5. You can do this in more simpler!

6. 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
*/```