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 <iostream>
#include <cmath>

using namespace std;

// function prototype
int convert(long long);

int main() {
  long long n;
  cout << "Enter a binary number: ";
  cin >> n;
  cout << n << " in binary = " << convert(n) << " in decimal";
  return 0;
}

// function definition
int convert(long long n) {
  int dec = 0, i = 0, rem;

  while (n!=0) {
    rem = n % 10;
    n /= 10;
    dec += rem * pow(2, 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 cmath 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 <iostream>
#include <cmath>
using namespace std;

long long convert(int);

int main() {
  int n, bin;
  cout << "Enter a decimal number: ";
  cin >> n;
  bin = convert(n);
  cout << n << " in decimal = " << bin << " in binary" << endl ;
  return 0;
}

long long convert(int n) {
  long long bin = 0;
  int rem, i = 1;

  while (n!=0) {
    rem = n % 2;
    n /= 2;
    bin += rem * i;
    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.


Also Read:

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