Here you will get program to convert decimal to binary in C.
We can convert a decimal number into binary by repeatedly dividing it by 2 and storing the remainder somewhere. Now display the remainders in reverse order.
Also Read: Convert Binary to Decimal in C
Convert Decimal to Binary in C
#include<stdio.h> int main() { int d,n,i,j,a[50]; printf("Enter a number:"); scanf("%d",&n); if(n==0) printf("\nThe binary conversion of 0 is 0"); else { printf("\nThe binary conversion of %d is 1",n); for(i=1;n!=1;++i) { d=n%2; a[i]=d; n=n/2; } for(j=i-1;j>0;--j) printf("%d",a[j]); } return 0; }
Output
Enter a number:10
The binary conversion of 10 is 1010
My compiler doesn't like #include or the files in it, but if I take those out it runs. Also the program as is crashes if user inputs 0, and displays a negative sign in front of every 1 if a negative number is input.
To fix the 0 problem, take out the 1 at the end of 2nd printf("") and make 1st for loop this way: for(i=0;n!=0;i++) and 2nd loop this way: for(j=i-1;j>=0;–j).
Now it won't crash, but it still won't display a value for 0, to fix this, before 1st for loop use if(n==0) printf("0");
Now to fix negative value problem: after the (n==0) printf("0"); use else if(n>0) and enclose all that remains (loops, their arguments, printf functions) in curly brackets (also called braces) {}.
finally, after the positive case is finished, use else
{
printf("-");
***
}
where *** represents all the stuff in positive case, except that in 1st for loop a[i]=d; is replaced with a[i]=-d.
With these changes made, it should work for any integer positive, negative, or 0 as long as size of integer entered doesn't exceed memory allocated to a variable of type int.
Thanks a lot for informing me, i have done the appropriate changes. Keep visitng.
thanks for u r information