Course
Introduction
C++ "Hello, World!" ProgramPrint Number Entered by UserAdd Two NumbersFind Quotient and RemainderFind Size of int, float, double and char in Your SystemSwap Two NumbersFind ASCII Value of a CharacterMultiply two NumbersDecisions and Loops
Check Whether Number is Even or OddCheck Whether a character is Vowel or ConsonantFind Largest Number Among Three NumbersFind All Roots of a Quadratic EquationCalculate Sum of Natural NumbersCheck Leap YearFind FactorialGenerate Multiplication TableDisplay Fibonacci SeriesFind GCDFind LCMReverse a NumberCalculate Power of a NumberCheck Whether a Number is Palindrome or NotCheck Whether a Number is Prime or NotDisplay Prime Numbers Between Two IntervalsCheck Armstrong NumberDisplay Armstrong Number Between Two IntervalsDisplay Factors of a NumberCreate Pyramid and PatternMake a Simple Calculator to Add, Subtract, Multiply or Divide Using switch...caseFunctions
Display Prime Numbers Between Two Intervals Using FunctionsCheck Prime Number By Creating a FunctionCheck Whether a Number can be Express as Sum of Two Prime NumbersFind Sum of Natural Numbers using RecursionCalculate Factorial of a Number Using RecursionFind G.C.D Using RecursionConvert Binary Number to Decimal and vice-versaConvert Octal Number to Decimal and vice-versaConvert Binary Number to Octal and vice-versaReverse a Sentence Using RecursionCalculate Power Using RecursionArrays and Strings
Calculate Average of Numbers Using ArraysFind Largest Element of an ArrayCalculate Standard DeviationAdd Two Matrix Using Multi-dimensional ArraysMultiply Two Matrix Using Multi-dimensional ArraysFind Transpose of a MatrixMultiply two Matrices by Passing Matrix to FunctionAccess Elements of an Array Using PointerSwap Numbers in Cyclic Order Using Call by ReferenceFind the Frequency of Characters in a StringFind the Number of Vowels, Consonants, Digits and White Spaces in a StringRemove all Characters in a String Except AlphabetsFind the Length of a StringConcatenate Two StringsCopy StringsSort Elements in Lexicographical Order (Dictionary Order)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:
- C++ Functions
- C++ User-defined Function Types
- C++ Recursion
- C++ if, if…else and Nested if…else
- C++ while and do…while Loop
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: