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
