# C Program to convert a decimal number to a binary number

Last updated on September 24, 2020

The following is a C program to convert a decimal number to a binary number:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | ```
/*******************************************************
Program to convert a decimal number to a binary number
******************************************************/
#include<stdio.h> // include stdio.h library
#include<math.h> // include math.h library
int main(void)
{
long long num, bin = 0;
int i = 0, rem;
printf("Enter a decimal number: ");
scanf("%lld", &num);
while(num != 0)
{
rem = num % 2; // get the remainder
bin = rem * (long long)pow(10, i++) + bin;
num /= 2; // get the quotient
}
printf("%lld", bin);
return 0; // return 0 to operating system
}
``` |

**Expected Output:** 1sr run:

1 2 | ```
Enter a decimal number: 4
100
``` |

2nd run:

1 2 | ```
Enter a decimal number: 123456
11110001001000000
``` |

## How it works: #

To convert a decimal number to a binary number, we follow these steps:

**Step 1**: Divide the decimal number continuously by 2 and right the remainder on the right-hand side of the dividend. We repeat this process until we get the quotient 0.

**Step 2**: Write the remainders from bottom to top.

Let's take some examples now.

**Example 1**: Convert decimal number `5`

to a binary.

Step 1:

Quotient | Remainder | |
---|---|---|

`5/2` |
`2` |
`1` |

`2/2` |
`1` |
`0` |

`1/2` |
`0` |
`1` |

Step 2:

\(5_{10}\) = \(101_2\)

**Example 2**: Convert decimal number `123`

to a binary.

Step 1:

Quotient | Remainder | |
---|---|---|

`123/2` |
`61` |
`1` |

`61/2` |
`30` |
`1` |

`30/2` |
`15` |
`0` |

`15/2` |
`7` |
`1` |

`7/2` |
`3` |
`1` |

`3/2` |
`1` |
`1` |

`1/2` |
`0` |
`1` |

Step 2: \(123_{10}\) = \(1111011_2\)

The following table shows what happens at each iteration of the loop (assuming `num = 4`

):

Iteration | rem | bin | num | i |
---|---|---|---|---|

After 1st iteration | `rem = 4 % 2 = 0` |
`bin = 0 * (10^0) + 0 = 0` |
`num = 4 / 2 = 2` |
`i = 2` |

After 2nd iteration | `rem = 2 % 2 = 0` |
`bin = 0 * (10^1) + 0 = 0` |
`num = 2 / 2 = 1` |
`i = 3` |

After 3rd iteration | `rem = 1 % 2 = 1` |
`bin = 1 * (10^2) + 0 = 100` |
`num = 1 / 2 = 0` |
`i = 4` |

Load Comments