Get this book -> Problems on Array: For Interviews and Competitive Programming

In this article, we will explore the algorithm to convert Decimal number to Octal number along with sample implementation.

**Table of contents**:

- Introduction to Decimal and Octal Numbers
- Steps for Conversion
- Step by Step Examples
- Code Implementation

## Introduction to Decimal and Octal Numbers

Firstly we will understand what are decimal and octal numbers.

**Decimal Numbers-**

All the number having a base ten are called decimal numbers,it has digits from 0-9.

It has both integer and decimal part ,seperated by a decimal(.).

Example: (236.90)10, (52.25)10 etc.

**Octal Numbers-**

All the number having a base eight are called octal numbers.It has digits from 0-7.

Example: (236)8, (52)8 etc.

## Steps for Conversion

**Step 1-** Write the given decimal number.

**Step 2-** If the given decimal number < 8 the octal number is the same as decimal number.

**Step 3-** If the decimal number > 7 then divide the number by 8.

**Step 4-** Write down the remainder, we get after division.

**Step 5-** Repeat step 3 and 4 with the quotient till it is < 8.

**Step 6-** Write the remainders in reverse order (bottom to top)

**Step 7-** The resultant is the equivalent octal number to the given decimal number.

## Step by Step Examples

**1. Input: (127) in base 10-**

**solution-**

127/8=15 (Quotient) and 7 (remainder)

15/8=1 (Quotient) and 7 (remainder)

1/8=0(Quotient) and 1(remainder)

Now, as we get 0 as quotient then we can take remainders in reverse order to get the required octal number.

(127)10=(177)8

**2. (210) in base 10-**

**solution-**

210/8=26 (Quotient) and 2 (remainder)

26/8=3 (Quotient) and 2 (remainder)

3/8=0(Quotient) and 3(remainder)

Now, as we get 0 as quotient then we can take remainders in reverse order to get the required octal number.

(127)10=(322)8

### For the decimal part we have two ways

**1. Converting the remainders-**

Steps to convert a fractinal decimal number are-

**Step 1-** Take decimal number as multiplicand.

**Step 2-** Multiple this number by 8.

**Step 3-** Store the value of integer part of result in an array.

**Step 4-** Repeat the above two steps until the number became zero.

**Step 5-** write the array .

**Examples-**

**1.(0.0146890625)10-**

**solution-**

0.140869140625 x 8=0.12695313 and 1(integer result)

0.12695313 x 8=0.01562504 and 1(integer result)

0.01562504 x 8=0.12500032 and 0(integer result)

0.12500032 x 8=0.0000025 and 1(integer result)

0.00000256 x 8=0.000020544 and 0(integer result)

**result=** (0.11010)8

**2. Converting with division-**

Steps to convert with help of division are-

**Step 1-** Start with decimal number and list the powers of 8.

**Step 2-** Divide the decimal number by the largest power of eight.

**Step 3-** Find the remainder and divide the remainder by the next power of 8.

**Step 4-** Repeat until you've found the full answer.

**Example**

**1.(164)10-**

**solution-**

powers of 8- 2 ,1 and 0

8^2=64

8^1=8

8^0=1

Then,

164/64=2.5625

taking the MSB 2 and remainder= 164- 64*2=36
36/8=4.5
taking the MSB 4 and remainder= 36- 8*4=4

4/8=0.5

taking the MSB 0 and remainder= 4- 8*0=4

Now the octal of the above number is (244)8.

## Code Implementation

**Code in C++**

```
#include <iostream>
using namespace std;
void DToO(int dn) {
int on = 0, placeValue = 1;//octal numberand place value is taken 1
int dNo = dn;//stored in a temporary variable
while (dn != 0) {
on += (dn % 8) * placeValue;
dn /= 8;
placeValue *= 10;
}
cout<<"Octal form of decimal number "<<dNo<<" is "<<octalNum<<endl;//output
}
int main() {
DToO(127);//int num send
return 0;
}
```

**Output-**

```
Octal form of decimal number 127 is 177
```

With this article at OpenGenus, you must have the complete idea of how to convert decimal number to octal number.