# Binary to Decimal conversion in C++

This tutorial would help in learning the following:

**Conversion of numbers**from binary to decimal in C++.**Re-conversion of characters**into their respective ASCII codes- Code for
**Binary to Decimal conversion in C++**

The decimal number system uses all the 10 digits (0 to 9) to represent a number while the binary number system 0 and 1. The following algorithm is used to convert a binary-number to a decimal-number:

*let the binary number be 111111*

- Give proper index to each digit of the binary number, starting with zero and from the rightmost digit

*number->111111*

index—->543210 - multiply the number present at index ‘i’ with the i
^{th}power of 2

*index 0 -> 1* 2*^{0}= 1

*index 1 -> 1* 2*^{1}= 2

index 2 -> 1* 2^{2}= 4

index 3 -> 1* 2^{3}= 8

index 4 -> 1* 2^{4}= 16

index 5 -> 1* 2^{5}= 32 - add all the products obtained from step 2, to get the equivalent decimal number

*1 + 2 + 4 + 8 + 16 + 32 = 63*

*(111111)*_{2}~ (63)_{10}

Each character used in computing is assigned a **special ASCII code** (decimal-number-system); hence, once a binary code is converted to its equivalent decimal-number code, the latter can be assigned a character as per the ASCII convention.

*Note, there can be different encoding systems on different machines*.

## C++ program to convert binary to decimal

//Note, this program assumes the convention of giving a fullstop after the octal-code for an individual character #include <stdio.h> #include <math.h>//this contains function pow which will be used to calculate the powers of 2 #define binarystring "1000011.1101111.1100100.1100101.100000.1010011.1110000.1100101.1100101.1100100.1111001." #define max 10//assuming that the length of individual code for a character will not exceed 10 char binary(char array[]) { char code=0;//the sum of products, as explained in the algorithm, would be stored in this variable char c; int temporary; int i; int j=0; for(i=0;array[i]!='\0';i++); //obtaining the index of the last code-character in array[] for(--i;i>=0;i--){ c=array[i]; temporary = c - '0'; code+=temporary*pow(2,j++); } return code;//since the integer sum is returned in a character variable, the corresponding character for the integer code would be assumed } void binaryToString(char array[]) { char helper[max+1];//extra length to accommodate the null character int index = 0; for(int i=0;array[i]!='\0';i++){ if(array[i]=='.')//printing the value of the code for one character { helper[index]='\0'; printf("%c",binary(helper)); index=0; } else//stacking up the incomplete code for one character { helper[index++]=array[i]; } } } int main() { printf("\nThe original form of the binary code %s is: ",binarystring); binaryToString(binarystring); return 0; }

**Output:**

The original form of the binary code 1000011.1101111.1100100.1100101.100000.1010011.1110000.1100101.1100101.1100100.1111001. is: Code Speedy

**Summary:**

**char binary(char[]):**

- the index of the last character in array[] is stored in ‘i’
- the value of ‘j’ corresponds with the required power of 2 that is required for the character at given index ‘i’
- the numerical value of the character-code at index ‘i’ is stored in ‘temporary’
- the sum of products for different indices is stored in ‘code’
- value of ‘code’ is returned

**void binaryToString(char[])**

- helper[] stores the binary code for one character at a time
- binary(char[]) is called and helper[] is passed to it to print the corresponding character for the binary code in helper[]

Also read:

## Leave a Reply