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

#include <stdio.h>

// function prototype
long long convert(long long);

int main() {

    long long n;

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

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

    return 0;
}

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

    long long dec = 0;
    int i = 0, rem;

    while (n != 0) {

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

        // add the rem * (2 ^ i) to dec
        dec += rem << i; // Using bitwise shift instead of pow

        // divide n by 10
        n /= 10;

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

Did you find this article helpful?

Your builder path starts here. Builders don't just know how to code, they create solutions that matter.

Escape tutorial hell and ship real projects.

Try Programiz PRO
  • Real-World Projects
  • On-Demand Learning
  • AI Mentor
  • Builder Community