Problem Statement: Given an Octal Number, convert it into Binary Number.
Examples:
Example 1: Input: 345 Output: 011100101 Explanation: Binary equivalent of given Octal expressionis 011100101 Example 2: Input: 170 Output: 001111000 Explanation: Binary equivalent of given Octal expression is 001111000
Solution
Disclaimer: Don’t jump directly to the solution, try it out yourself first.
Intuition:
Approach:
For Octal to Binary Conversion, we will first convert Octal Number System to Decimal Number System and then convert Decimal Number System to Binary Number System.
For Octal to Decimal Conversion
We will take every digit of the number and multiply it with 8 raised to power i which will increase by 1 when we move to the next digit and then add it to sum. This task is repeated until n becomes 0.
For Decimal to Binary Conversion
For Decimal to Binary Conversion, we will divide the given number by 2 ( Since the Binary Numbers System has 2 digits in use ) repeatedly, and its remains will be stored till the number becomes zero.
Let us continue with 229.
Code:
C++ Code
#include <iostream>
#include <math.h>
using namespace std;
int OctaltoDecimal(int Octal)
{
int Decimal = 0;
int i = 0;
while (Octal != 0)
{
int rem = Octal % 10;
Decimal += rem * pow(8, i);
i++;
Octal /= 10;
}
return Decimal;
}
int DecimaltoBinary(int decimal)
{
int Binary = 0;
int i = 0;
while (decimal != 0)
{
int rem = decimal % 2;
Binary += (rem * pow(10, i));
i++;
decimal = decimal / 2;
}
return Binary;
}
int main()
{
int Octal = 345;
int Decimal = OctaltoDecimal(Octal);
cout << "The binary conversion of the given octal number is "<<DecimaltoBinary(Decimal) << endl;
return 0;
}
Output:
The binary conversion of the given octal number is 11100101
Time Complexity: O(log n) where n is the number
Space Complexity: O(1)
Java Code
import java.util.*;
public class Main {
public static int DecimaltoBinary(int decimal) {
int Binary = 0;
int i = 0;
while (decimal != 0) {
int rem = decimal % 2;
Binary += (rem * Math.pow(10, i));
i++;
decimal = decimal / 2;
}
return Binary;
}
public static int OctaltoDecimal(int Octal) {
int Decimal = 0;
int i = 0;
while (Octal != 0) {
int rem = Octal % 10;
Decimal += rem * Math.pow(8, i);
i++;
Octal /= 10;
}
return Decimal;
}
public static void main(String[] args) {
int Octal = 345;
int Decimal = OctaltoDecimal(Octal);
System.out.println("The binary conversion of the given octal number is
"+DecimaltoBinary(Decimal));
}
}
Output:
The binary conversion of the given octal number is 11100101
Time Complexity: O(log n) where n is the number
Space Complexity: O(1)
Special thanks to Gurmeet Singh for contributing to this article on takeUforward. If you also wish to share your knowledge with the takeUforward fam, please check out this article