C program to convert binary values to octal:
In this post, we will learn how to convert a binary value to octal. The binary number system uses base 2 and the octal number system uses base 8.
We will write a program that will take a binary number as input and print the octal value for that binary number.
How to convert a binary value to octal:
The easiest way to convert a binary value to octal is by converting the binary value to decimal and then converting the decimal value to octal.
- Convert binary to decimal
- Convert the decimal result to binary
So, we need to learn two different types of conversions. Let’s check how to do these:
Binary to decimal conversion:
The binary number system uses base 2 and the decimal number system uses base 10. If you want to convert a binary number to decimal, you need to follow the following steps:
- Start from right to left
- Multiply the rightmost digit with 2^n, n starts from 0. So, for the first digit, multiply it with 2^0, multiply the second digit with 2^1 etc.
- Add it to a sum variable. This variable is initialized as 0 and this will hold the final decimal value.
- Remove the rightmost digit.
- Follow the above steps until the number becomes 0.
For example, if you want to convert 1101 to decimal:
- decimal = 0
- 1101 -> Remove the last digit and multiply it with 2^0, add it to sum -> 0 + 1 * 2^0 = 1
- 110 -> Remove the last digit and multiply it with 2^1, add it to sum -> 1 + 0 * 2^1 = 1
- 11 -> Remove the last digit and multiply it with 2^2, add it to sum -> 1 + 1 * 2^2 = 5
- 1 -> Remove the last digit and multiply it with 2^3, add it to sum -> 5 + 1 * 2^3 = 13
So, 13 is the decimal representation of 1101.
Decimal to octal conversion:
We need to follow the following steps to convert a decimal to octal:
- Divide the decimal value by 8. store the remainder.
- Keep diving the value by 8 until it becomes 0.
- If we join the remainders in reverse order, it will be the octal value.
Let’s try to convert 200 to octal:
- 200/8 = 25 -> remainder: 0
- 25/8 = 3 -> remainder: 1
- 3/8 = 0 -> remainder: 3
So, 310 is the octal value of 200.
C program:
Let’s write down the program in C. It will take the binary value as input from the user and print the octal result:
#include <stdio.h>
int binaryToDecimal(long long binary)
{
int decimal = 0;
int multiplier = 1;
while (binary != 0)
{
decimal += (binary % 10) * multiplier;
multiplier *= 2;
binary /= 10;
}
return decimal;
}
int decimalToOctal(int decimal)
{
int octal = 0;
int multiplier = 1;
while (decimal != 0)
{
octal += (decimal % 8) * multiplier;
decimal /= 8;
multiplier *= 10;
}
return octal;
}
int main()
{
long long binary;
printf("Enter the binary number: ");
scanf("%lld", &binary);
int decimal = binaryToDecimal(binary);
int octal = decimalToOctal(decimal);
printf("Octal value: %d\n", octal);
return 0;
}
Here,
- binaryToDecimal method is used to convert a binary to decimal.
- It created an integer variable decimal to hold the final decimal value and it is initialized as 0
- The multiplier is initialized as 2^0 i.e. 1
- The while loop runs until the value of the binary is not 0.
- Inside the loop, it gets the last digit of the binary number by using % 10 and multiplies it with multiplier. This value is added to decimal.
- The value of multiplier is updated and it removes the last digit.
- At the end of the method, it returns the decimal variable.
- decimalToOctal is used to convert a decimal value to octal.
- This method takes the decimal value as the parameter and returns its octal representation.
- The octal variable is to hold the final octal value and it is initialized as 0. The multiplier is initialized as 1.
- The while loop will run until the decimal value is greater than 0.
- On each step, it divides the decimal value by 8 and multiplies it with the multiplier. This value is added to the final octal value.
- It also updates the decimal value and multiplier on each step.
- At the end of this method, it returns the final octal value calculated.
- Inside main, it stores the binary value in a long long variable.
- It calls binaryToDecimal to convert the binary value to decimal and decimalToOctal to convert the decimal value to octal.
- The last line is printing the octal value calculated.
Sample output:
If you run this program, it will print output as like below:
Enter the binary number: 10110
Octal value: 26
You might also like:
- C program to find the average runs of cricket players using structure
- C program to convert a string to hexadecimal value
- C program to swap two bits of a number
- C program to find the number of lines, words and characters in a string
- How to create a hollow diamond star pattern in C
- C program to print the size of the longest word in a string
- How to print the longest word of a string in C