C Program to Convert Binary Number to Decimal and vice-versa | C Programs for Beginners

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.


Labels : #c ,#code ,#examples ,

Post a Comment