C program to convert the given binary number into decimal

Problem Description

This C language program converts a given binary number to decimal number. Binary numbers are the one which contains only 0 and 1. The program flow is as follows:

1. Take a binary number as input.
2. Starting from the last digit, multiply each digits of the binary number with the powers of 2 respectively(starting with 0).
3. Add all the multiplied digits.
4. The total sum gives the decimal number.

C program to convert the given binary number into decimal - Source code
  /* C program to convert the given binary number into decimal */

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

int binaryToDecimal(long binary_num)
    int decimal_num = 0, i = 0, remainder;
    while (binary_num!=0)
        remainder = binary_num % 10;
        binary_num = binary_num / 10;
        decimal_num = decimal_num + remainder*pow(2,i);
    return decimal_num;

int main()
    long binary_num;
    printf("Enter a binary number: ");
    scanf("%ld", &binary_num);

    printf("Equivalent decimal number is: %d", binaryToDecimal(binary_num));
    return 0;

Program Output

Case 1:

Enter a binary number: 10001001
Equivalent decimal number is: 137

Case 2:

Enter a binary number: 10001010
Equivalent decimal number is: 138

Program Explanation

1. A separate function binaryToDecimal is created to convert the given binary number to decimal.

2. Accept a binary number and store it in the variable binary_num.

3. Call the function binaryToDecimal function with one parameter binary_num from inside the printf statement.

4. Inside the user defined function, initialize the variable decimal_num and variable i to 0.

5. Obtain the remainder of the binary number using the modulus operator (%). Store the remainder in the variable remainder. Divide the decimal number by 10 to cut off the last digit.

6. Multiply remainder with the 2^i and add it to the decimal_num variable.

7. Increment the variable i by 1.

8. Repeat the steps 5, 6 and 7 until the binary_num value becomes 0.

9. Print the variable decimal_num as output.

10. Here note that it is necessary to include math.h header file as we are using the library function pow.