Program to convert decimal to binary in c




Decimal to binary conversion in c programming language. C source code for decimal to binary conversion:


#include<stdio.h>


int main(){

    long int decimalNumber,remainder,quotient;

    int binaryNumber[100],i=1,j;


    printf("Enter any decimal number: ");

    scanf("%ld",&decimalNumber);


    quotient = decimalNumber;


    while(quotient!=0){

         binaryNumber[i++]= quotient % 2;

         quotient = quotient / 2;

    }


    printf("Equivalent binary value of decimal number %d: ",decimalNumber);

    for(j = i -1 ;j> 0;j--)

         printf("%d",binaryNumber[j]);


    return 0;

}

Sample output:

Enter any decimal number: 50
Equivalent binary value of decimal number 50: 110010



Algorithm:


Binary number system: It is base 2 number system which uses the digits from 0 and 1.

Decimal number system:
It is base 10 number system which uses the digits from 0 to 9

Convert from decimal to binary algorithm:

Following steps describe how to convert decimal to binary

Step 1: Divide the original decimal number by 2
Step 2: Divide the quotient by 2
Step 3: Repeat the step 2 until we get quotient equal to zero.

Equivalent binary number would be remainders of each step in the reverse order.

Decimal to binary conversion with example:

For example we want to convert decimal number 25 in the binary.

Step 1:  25 / 2  Remainder : 1 , Quotient : 12
Step 2:  12 / 2  Remainder : 0 , Quotient : 6
Step 3:   6 / 2  Remainder : 0 , Quotient : 3
Step 4:   3 / 2  Remainder : 1 , Quotient : 1
Step 5:   1 / 2  Remainder : 1 , Quotient : 0

So equivalent binary number is: 11001
That is (25)10 = (11001)2





6. Write a c program to convert octal number to hexadecimal number.
8. Write a c program to convert hexadecimal number to octal number.
9. Write a c program to convert hexadecimal number to decimal number.
10. Write a c program to convert binary number to octal number.

36 comments:

Anonymous said...

thanks to ur great effort........ur work has really been helpful to me n will always be grateful to u.....
thanks!
aayush.

rahul&friends said...

truly i feel great to come here

rpd said...

I see your algorithm logic for this uses value 'remainder' and your code declares a variable long int remainder; but this is unused in the program? I'm not sure why!

ritesh kumar said...

Yes you are correct. No need to declare remainder. Thanks

janitor said...

What about negative decimal numbers as input, will it work?

Anonymous said...

what if the number has a fractional part?

Anonymous said...

wtf its actually a good question.

Anonymous said...

how can i save the new binary number in a new array instead of printing it?
thanks in advance

tutstation said...

thankx for your help your solution was really very much helpful. i really felt great. Thankx

olga kuzmin said...

how can you convert a decimal array into binary one using recursion?
example:
(decimal) 1,2,3,4,5 => (binary)0001,0010, 0011, 0100, 0101

Gowtham Gowthu said...

plz answer to olga kuzmin's question..

Gowtham Gowthu said...

dude,send me the answer if u have got it.

Alwyn Alejandro said...

thanks a lot sir! it helps me a lot!

Anonymous said...

What if the decimal number is 0? It won't enter the loop

gaurav sharma said...

@olga====apply the conversion code in a for loop that trace throufh the array

Anonymous said...

There is one 0 (zero) more than should be,in the code(last FOR):

for(j = i -1 ;j> 0;j--)

there should be J>1 not 0.

Anonymous said...

were should i put the clrscr(); ??? thanks

habibruet said...

Hello dear!!,
you here printing one by one number. But when you should print it as a number!! Suppose, you need to use the binary conversion as a number,then your logic does not work.
Thanks.

megha agrawal said...

#include
#include
int main()
{ long int decimal,binr=0;
int bin=0,rem,i;
printf("enter the decimal number:");
scanf("%ld",&decimal);
for(i=1;decimal!=0;i++)
{ rem=decimal%2;
binr= binr*10 +rem;
decimal=decimal/2;

}
for(i=0;binr!=0;i++)
{ rem = binr%10;
bin= bin*10 +rem ;
binr=binr/10;
}
printf("the binary equivalent is: %ld",bin);
getch();
return 0;
}
This is a code with0ut using a array and can be used for decimal to octal num also anly the change is to make 8, where 2 is written.

NITISH KUMAR said...

#include
void binary(int );
int main()
{
int n;
scanf("%d",&n);
binary(n);
return 0;
}
void binary(int p)
{
if(p==1)
printf("1");
else
{
binary(p/2);
printf("%d",p%2);
}
}

Anonymous said...

Hey, quick question about the value of i. Should the value of i be 100 and not 1. If it 1, the for loop with j would give an error? I'm confused about that.

Anonymous said...

Nevermind. I got the point! Thanks!

Anonymous said...

how to write a program to print the boundary of a matrix

Yael Locker-Biletzki said...

why do i get this and each number of the binary is in a different line and how to fix it
for instance the number 4 shows as
1
0
0

Anonymous said...

its simple we can just take decimal part and multiply by 2. take reminder again multiply by 2. Repeat until we get 0

Kailas Kharse said...

#include
#include
#define CHK_BIT(num,pos) (num&(0x01<<(pos-1)))
void dec2bin(int num);
main(){
int num;
printf("Enter the Number");
scanf("%d",&num);
dec2bin(num);
}

void dec2bin(int num){
int i;
for(i=31; i>0; i--){
if(CHK_BIT(num,i))
printf("1");
else
printf("0");
}
printf("\n");
}

foysal hossain said...

Write a program to Convert i) Decimal to Binary ii) Binary to Decimal number at kao paro ?

ABDULMOIZ AHMER said...

#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
int main()
{
int i=2;
int n,a;
cout<<"enter a decimal number"<<"\n";
cin>>n;
int arr[32];
if(n>0)
{
arr[0]=0;
}
else
{
arr[0]=1;
}
if(arr[0]==1)
{
n=n/-1;
}
a=n;
while(a>1)
{

arr[i]=n%2;
a=a/2;
n=a;
i=i+1;
};
arr[1]=1;
for(int j=i;j<32;j++)
{
arr[j]=0;
}
cout<<"the given array is"<<"\n";
cout<<arr[0]<<arr[1];
for(int j=2;j<32;j++)
{
cout<<arr[j];
}

return 0;
}

ABDULMOIZ AHMER said...

#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
int main()
{
int i=2;
int n,a;
cout<<"enter a decimal number"<<"\n";
cin>>n;
int arr[32];
if(n>0)
{
arr[0]=0;
}
else
{
arr[0]=1;
}
if(arr[0]==1)
{
n=n/-1;
}
a=n;
while(a>1)
{

arr[i]=n%2;
a=a/2;
n=a;
i=i+1;
};
arr[1]=1;
for(int j=i;j<32;j++)
{
arr[j]=0;
}
cout<<"the given array is"<<"\n";
cout<<arr[0]<<arr[1];
for(int j=2;j<32;j++)
{
cout<<arr[j];
}

return 0;
}

Mukul Bahuguna said...

the code will not work for negative decimal numbers & also for decimal numbers with fraction part..!!

MAHESH GAUR said...

here binaryNumber[i++] is used for storing binary numbers

abu mohammad rafi said...

#include
int i=0;
int reminder[100];
binary(int decimal)
{
if(decimal==0)
{
reminder[i++]=decimal;
}
else if(decimal==1)
{
reminder[i++]=decimal;
}
else
{
reminder[i++]=decimal%2;
decimal=decimal/2;
binary(decimal);
}
}
int main()
{
int decimal,j;
printf("Enter a decimal number :");
scanf("%d",&decimal);
binary(decimal);
for(j=i-1;j>=0;j--)
printf("%d",reminder[j]);
return 0;
}

Iron Master said...

HI can i use dynamic memory to solve this problem?Is this approach considered appropriate? And ofcourse, i have written the program in c++ instead of c. But i only wanted to confirm if this approach is legible.
#include
#include
using namespace std;

int to_binary(int num){
bool *binary_sequence;

if (num==1) return 1;
else if(!num)return 0;
int counter=0;
while (num>1){
if (counter==0)
{
binary_sequence=new bool[counter+1];
binary_sequence[0]=num%2;
}
else
{
bool temp[counter];
for(int i=0;i=0;index--)
{
result=result=result*10;
result=result+binary_sequence[index];

}

delete [] binary_sequence;
return result;
}
int main()
{
int n;
cout<<"Enter any number "<>n;
cout<<"Binary equivalent "<<endl;
cout<<to_binary(n);
getche();
return 0;
}

jenifer said...

Thank you so much for sharing this informative post,..I really like it,
.Code Fibo

Unknown said...

Can someone tell me programme to convert decimal to binary by call by value method

Vikram Choudhary said...

what if the given decimal number is of unknown no. of digits(no.of digits<1000)