C Program to convert binary number into its equivalent Decimal, Octal, and Hexadecimal representations. In this program we convert a binary number to decimal. Then convert that decimal number to octal and Hexadecimal equivalent.
The program implements various functions to do the job.
- binary_to_decimal : Convert given binary number to it’s decimal equivalent
- decimal_to_octal : Convert from decimal to octal
- decimal_to_hex : Convert from decimal to hexadecimal
The main function takes care of getting input from user, calling the above functions and displaying the results.
Read more here: What are binary, octal, and hexadecimal notation?
The Program
#include <stdio.h> | |
/* | |
* Function to convert a given decimal number to its | |
* hexadecimal equivalent. | |
*/ | |
int decimal_to_hex(long number, char *hexstr, int pos) { | |
long i; | |
int new_position, n; | |
char hexchar; | |
new_position = pos; | |
if(number > 0) { | |
i = number % 16; | |
n = number / 16; | |
new_position = decimal_to_hex(n, hexstr, pos); | |
if(i >= 10) { | |
switch(i) { | |
case 10: hexchar = 'A'; break; | |
case 11: hexchar = 'B'; break; | |
case 12: hexchar = 'C'; break; | |
case 13: hexchar = 'D'; break; | |
case 14: hexchar = 'E'; break; | |
case 15: hexchar = 'F'; break; | |
} | |
} else { | |
hexchar = '0' + i; | |
} | |
hexstr[new_position++] = hexchar; | |
hexstr[new_position] = '\0'; | |
} | |
return new_position; | |
} | |
/* | |
* Function to convert a given binary number to | |
* its decimal equivalent. | |
*/ | |
int binary_to_decimal(int num) { | |
int rem, base = 1, decimal_number = 0; | |
while( num > 0) { | |
rem = num % 10; | |
if((rem == 0) || (rem == 1)) { | |
decimal_number = decimal_number + rem * base; | |
num = num / 10 ; | |
base = base * 2; | |
} else { | |
return -1; // Invalid binary number | |
} | |
} | |
return decimal_number; | |
} | |
/* | |
* Function to convert a given decimal number in to | |
* its octal equivalent. | |
*/ | |
int decimal_to_octal(int number) { | |
int octal_number = 0, rem, base = 1; | |
while(number > 0) { | |
rem = number % 8; | |
octal_number = octal_number + rem * base; | |
base = base * 10; | |
number = number / 8; | |
} | |
return octal_number; | |
} | |
void main() { | |
int binary_numer, decimal_number, octal_number; | |
char hexstr[25] = "0"; | |
printf("Enter a binary number: "); | |
scanf("%d", &binary_numer); | |
printf("Given Binary number is: %d\n", binary_numer); | |
decimal_number = binary_to_decimal(binary_numer); | |
if(decimal_number == -1) { | |
printf("\nInvalid binary number. Try again."); | |
return; | |
} | |
printf("Its Decimal equivalent is: %d", decimal_number); | |
octal_number = decimal_to_octal(decimal_number); | |
printf("\nIts octal equivalent is: %d", octal_number); | |
decimal_to_hex(decimal_number, hexstr, 0); | |
printf("\nIts Hexa Decimal equivalent is: %s", hexstr); | |
} |
Sample Output
Related Programs
- C Program to convert Binary number to Decimal
- C program to find the 2’s complement of a binary number
- C Program to convert a given decimal number into its binary equivalent
You can discuss these programs on our Facebook Page. Like to get updates right inside your feed reader? Grab our feed!
Edit1 : 11th August 2017
- Added screenshot of sample runs
- Moved the code to it’s own Gist
- Modified the program to make it more modular
(c) www.c-program-example.com