mirror of
https://github.com/TheAlgorithms/C
synced 2024-11-22 05:21:49 +03:00
Add: Implementation of Binary to Octal Conversion
This commit is contained in:
parent
bb8c41b2de
commit
f7795e1356
52
conversions/binary2octal.c
Normal file
52
conversions/binary2octal.c
Normal file
@ -0,0 +1,52 @@
|
||||
// Binary number to octal number conversion
|
||||
#include<stdio.h>
|
||||
|
||||
//Function that returns the last three digits
|
||||
int three_digits(int n)
|
||||
{
|
||||
int r, d = 0, p=1;
|
||||
|
||||
for(int i=0; i<3; i++)
|
||||
{
|
||||
r = n%10;
|
||||
d = d + r * p;
|
||||
p = p * 10;
|
||||
n = n / 10;
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int binary_num, d=0, base=1, remainder, td, res=0, ord=1;
|
||||
|
||||
printf("Enter the binary no: ");
|
||||
scanf("%d", &binary_num);
|
||||
|
||||
while(binary_num > 0)
|
||||
{
|
||||
if(binary_num > 111) //Checking if binary number is greater than three digits
|
||||
td = three_digits(binary_num);
|
||||
|
||||
else td = binary_num;
|
||||
|
||||
binary_num = binary_num / 1000;
|
||||
|
||||
d = 0, base =1;
|
||||
|
||||
// Converting the last three digits to decimal
|
||||
while(td > 0)
|
||||
{
|
||||
remainder = td % 10;
|
||||
td = td / 10;
|
||||
d = d + (base * remainder);
|
||||
base = base * 2;
|
||||
}
|
||||
|
||||
res = res + d * ord; // Calculating the octal value
|
||||
ord = ord * 10;
|
||||
}
|
||||
|
||||
printf("\nOctal equivalent is: %d", res);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user