In this example, you will learn to convert binary numbers to decimal and vice-versa manually by creating a user-defined function.
To
understand this example, you should have the knowledge of the following C
programming topics:
·
C
Functions
·
C
User-defined functions
Example
1: C Program to Convert Binary Number to Decimal
// convert binary to decimal
#include <stdio.h>
#include <math.h>
// function prototype
int convert(long long);
int main() {
long long n;
printf("Enter a binary number: ");
scanf("%lld", &n);
printf("%lld in binary = %d in decimal", n, convert(n));
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 math.h 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 <stdio.h>
#include <math.h>
long long convert(int);
int main() {
int n, bin;
printf("Enter a decimal number: ");
scanf("%d", &n);
bin = convert(n);
printf("%d in decimal = %lld in binary", n, bin);
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.