# C++ Program for Octal to Binary conversion

## Octal to Binary Conversion

There are 2 approaches of converting an octal number into a binary number like:

• Write 3 digit binary number for all the digits of a number from left to right.
• first convert octal to decimal and then decimal to binary .

We are using the second approach, it is a long but very simple approach which can also be implemented easily with minimum chances of error. ## Method 1:-

• Accept octal number
• Convert it into decimal Equivalent
• Convert this decimal value into Binary

Make sure you have visited these two pages before moving ahead with the code –

### Method 1 Code in C++

Run
```// this program converts octal to binary
// by converting octal->decimal->binary
#include<iostream>
#include<math.h>
using namespace std;

void
convert (int octal)
{

int i = 0, decimal = 0;

//converting octal to decimal
while (octal != 0)

{

int digit = octal % 10;

decimal += digit * pow (8, i);

octal /= 10;

i++;

}

printf ("Decimal Value: %d\n", decimal);

long long binary = 0;

int rem;

i = 1;

// converting decimal to binary here
while (decimal != 0)

{

rem = decimal % 2;

decimal /= 2;

binary += rem * i;

// moving to next position ex: units -> tens
i *= 10;

}

cout << binary;

}

int
main ()
{

int octal;

cout << "Octal Value: "; cin >> octal;
convert (octal);
return 0;
}
```

### Output

`Octal Value: 12Decimal Value: 10Binary Value: 1010`

## Method 2

Each digit of an octal number can be converted into its binary Equivalent (see image)

### Binary Representation for Octal digit:

• 0 => 000
• 1 => 001
• 2 => 010
• 3 => 011
• 4 => 100
• 5 => 101
• 6 => 110
• 7 => 111 ### Method 2 Code in C++

Run
```#include<iostream>
#define MAX 1000
using namespace std;

void
convert (char octalnum[])
{

int i = 0;

cout << "Equivalent Binary Number: ";

while (octalnum[i])

{

//use switch case for multiple condition
switch (octalnum[i])

{

case '0':

printf ("000");
break;

case '1':

printf ("001");
break;

case '2':

printf ("010");
break;

case '3':

printf ("011");
break;

case '4':

printf ("100");
break;

case '5':

printf ("101");
break;

case '6':

printf ("110");
break;

case '7':

printf ("111");
break;

//for invalid case
default:

cout << "\n Invalid octal digit %c " << octalnum[i];

return;

}

i++;

}

return;

}

int
main ()
{

char octalnum[MAX];

cout << "Insert an octal number: ";

cin >> octalnum;
convert (octalnum);
}
```

### Output

`Insert an octal number: 347Equivalent Binary Number: 011100111`