# C Program to Convert Binary Number to Decimal and vice-versa

To understand this example, you should have the knowledge of the following C programming topics:

## Example 1: C Program to Convert Binary Number to Decimal

``````// convert binary to decimal

#include <stdio.h>
#include <math.h>

// function prototype
int convert(long long);

int main() {

long long n;

printf("Enter a binary number: ");
scanf("%lld", &n);

printf("%lld in binary = %d in decimal", n, convert(n));

return 0;
}

// function definition
int convert(long long n) {

int dec = 0, i = 0, rem;

while (n != 0) {

// get remainder of n divided by 10
rem = n % 10;

// divide n by 10
n /= 10;

// multiply rem by (2 ^ i)
// add the product to dec
dec += rem * pow(2, i);

// increment i
++i;
}

return dec;
}``````

Output

```Enter a binary number: 1101
1101 in binary = 13 in decimal```

In the program, we have included the header file `math.h` to perform mathematical operations in the program.

We ask the user to enter a binary number and pass it to the `convert()` function to convert it decimal.

Suppose `n = 1101`. Let's see how the `while` loop in the `convert()` function works.

n != 0 rem = n % 10 n /= 10 i dec += rem * pow(2, i)
1101 != 0 1101 % 10 = 1 1101 / 10 = 110 0 0 + 1 * pow (2, 0) = 1
110 != 0 110 % 10 = 0 110 / 10 = 11 1 1 + 0 * pow (2, 1) = 1
10 != 0 11 % 10 = 1 11 /10 = 1 2 1 + 1 * pow (2, 2) = 5
1 != 0 1 % 10 = 1 1 / 10 = 0 3 5 + 1 * pow (2, 3) = 13
0 != 0 - - - Loop terminates

So, `1101` in binary is `13` in decimal.

Now, let's see how we can change the decimal number into a binary number.

## Example 2: C Program to convert decimal number to binary

``````// convert decimal to binary

#include <stdio.h>
#include <math.h>

// function prototype
long long convert(int);

int main() {

int n;
long long bin;

printf("Enter a decimal number: ");
scanf("%d", &n);

// convert to binary using the convert() function
bin = convert(n);

printf("%d in decimal =  %lld in binary", n, bin);

return 0;
}

// function to convert decimal to binary
long long convert(int n) {

// variable to store the result
long long bin = 0;

int rem, i = 1;

// loop to convert to binary
while (n != 0) {

// get remainder of n divided by 2
rem = n % 2;

// divide n by 2
n /= 2;

// multiply remainder by i
// add the product to bin
bin += rem * i;

// multiply i by 10
i *= 10;
}

return bin;
}``````

Output

```Enter a decimal number: 13
13 in decimal = 1101 in binary```

Suppose `n = 13`. Let's see how the `while` loop in the `convert()` function works.

n != 0 rem = n % 2 n /= 2 i bin += rem * i i * = 10
13 != 0 13 % 2 = 1 13 / 2 = 6 1 0 + 1 * 1 = 1 1 * 10 = 10
6 != 0 6 % 2 = 0 6 / 2 = 3 10 1 + 0 * 10 = 1 10 * 10 = 100
3 != 0 3 % 2 = 1 3 / 2 = 1 100 1 + 1 * 100 = 101 100 * 10 = 1000
1 != 0 1 % 2 = 1 1 / 2 = 0 1000 101 + 1 * 1000 = 1101 1000 * 10 = 10000
0 != 0 - - - Loop terminates

Thus, `13` in decimal is `1101` in binary.