Convert Binary to Decimal in C [2 Methods]

programming

Summary: In this tutorial, we will learn different ways to convert a decimal number into its corresponding binary representation in C programming language.

Example:

Input:  1111
Output: 15

Input:  101
Output: 5

Method 1: Using While Loop

Binary to Decimal

This is the standard way of converting a binary number to its corresponding decimal representation.

We multiply each binary digit with their corresponding exponential value of 2 (i.e. 2position_from_right -1) and sum them up.

In our program, we use a while loop to extract each binary digit, multiply them with 2x and sum them.

#include <stdio.h>
 
int main()
{
    int bin, i=0, decimal = 0, digit;
 
    printf("Enter a Binary number: \n");
    scanf("%d",&bin);
 
    while(bin != 0){
        //extract the digit
        digit = bin%10;       
 
        //multiply the digit with the 2x and add to the decimal
        decimal = decimal + pow(2,i) * digit;
        
        //remove the digit from the binary
        bin = bin/10;
        
        //increment the exponent power
        i = i+1;      
    }
 
    printf("Decimal: %d", decimal);
 
    return 0;
}

Output:

Enter a Binary number:
1011
Decimal: 11


Method 2: Using Recursion

We can also convert a binary number into a decimal using recursion.

In this method, we use the same approach as the above program but implement it in a recursive way.

#include <stdio.h>

//recursive function to convert binary to decimal 
int binToDec(int bin, int i){
    /*
        *i represents the nth recursive call as well as
        *nth digit from right, so it can be used as an exponent
    */
    
    //base condition
    if(bin == 0 || bin == 1)
        return pow(2,i)*bin;
    
    //extract binary digit, then multiply 2x and-
    //sum with the next recusive call
    int digit = bin%10;
    return (pow(2,i) * digit) + binToDec(bin/10, ++i);
 
}
 
int main()
{
    int bin, decimal;
 
    printf("Enter a Binary number: \n");
    scanf("%d",&bin);
 
    decimal = binToDec(bin,0);
 
    printf("Decimal: %d", decimal);
 
    return 0;
}

Output:

Enter a Binary number:
101
Decimal: 5


In each recursive call, we extract a digit from the binary number and multiply it with its corresponding value of 2 raised to the power its position in the original binary number from the right.

Finally, we sum the multiplication result with the next recursive call result.

Note: Is it important to eliminate the last digit from binary on every recursive call.

In this programming example, we learned to convert a binary number into decimal in C. If you have any doubts or suggestions then please comment below.

Leave a Reply

Your email address will not be published. Required fields are marked *