Code360 powered by Coding Ninjas X Naukri.com. Code360 powered by Coding Ninjas X Naukri.com
Table of contents
1.
Introduction
2.
Octal Numbers
3.
Decimal Numbers
4.
The logic for Converting Octal Numbers to Decimal
5.
C++ Program to Convert Octal Number to Decimal
5.1.
Code
5.2.
Input
5.3.
Output
5.4.
Time Complexity
5.5.
Space Complexity
6.
If The Input is In The Form of String
6.1.
Code
6.2.
Input 
6.3.
Output
6.4.
Time Complexity
6.5.
Space Complexity
7.
Alternate Way
7.1.
Code
7.2.
Input 
7.3.
Output
7.4.
Time Complexity
7.5.
Space Complexity
8.
Using Predefined Function
8.1.
Code
8.2.
Input 
8.3.
Output 
8.4.
Time Complexity
8.5.
Space Complexity
9.
Frequently Asked Questions
9.1.
What is an Octal number?
9.2.
What is the base of Octal numbers?
9.3.
Which predefined function in C++ can be used to convert an Octal string into a decimal number?
9.4.
What will be the value of the octal number 763254637 in the decimal system?
10.
Conclusion
Last Updated: Mar 27, 2024
Easy

C++ Program to Convert Octal Number to Decimal

Author ANKIT KUMAR
0 upvote

Introduction

The problems related to converting a number in one number system to another are very common in programming. They are asked from university exams to even in the coding rounds of various companies.

The key to easily solving such problems is to understand the number system in which the number is represented. In this article, we are going to discuss the conversion from octal to decimal. We would be given a number in the octal number system, and we would be required to convert it into a decimal. For example, 106 in octal would be 70 in decimal.

Let's quickly recap what a binary number and a decimal number are.

Octal Numbers

The octal number system is made up of eight different numerals, from 0 to 7. All numbers can be represented using these numbers. The octal numbers have a base of 8.

This article assumes that the readers are aware of what an octal number is. We shall see how to convert it to a decimal number in the article ahead.

Decimal Numbers

These are the numbers which we generally use, like 6, 9875, 123, etc. They have a base of 10. The decimal numbers consist of numerals from 0 to 9.

The logic for Converting Octal Numbers to Decimal

Before we move on to discuss the code implementation of converting an octal number into a decimal, let us first discuss the logic that we shall use in the code while converting octal to decimal.

  • We start from the rightmost digit of the octal number and travel towards the leftmost digit of that number.
  • The position of the rightmost digit is considered zero, and every time we move towards the left digit, the position is increased by 1. In code, we shall implement this using a position variable.
  • For every digit (the value is in the range 0-7), we multiply that digit with 8 raised to the power of the position of that digit and add it to the result. We multiply it with the power of 8 because the base of the octal number is 8.
  • Finally, after doing the above steps for every digit, we get the value of the decimal form as a result. We store the result in every step using a variable.

The below image demonstrates how the octal number is converted into decimal.

We have an octal number 467. In order to convert it into decimal, we start with the rightmost digit. Here the rightmost digit is 7 at position 0. We assume the position to be zero-based. Therefore the result at this level is 7 X 80 = 7. We assume a variable, say,  sum. The sum at this level is 7. For the second digit, the result is 6 X 8 = 48. The sum until the second digit is 7+48 = 55. For the third digit, the result is 4 X 64 = 256. The sum after calculating the result of the third digit is 55+256= 311. This sum is the decimal representation of the octal number 467.

Also see, Application of Oops

C++ Program to Convert Octal Number to Decimal

Input: An octal number consisting of digits from 0 to 7.

Expected output: The decimal form of the octal number provided in the input.

Code

// C++ program to convert an Octal number to Decimal


#include <iostream>


#include<cmath>



using namespace std;


// this function receives a number in octal form 
// and returns the corresponding value in decimal form


int octalToDecimal(int octal) {


  int temp = octal;


  // position variable to keep track of the position of the digits
  // from right to left, position increases from 0, 1, 2,...,n
  int position = 0;


  // this stores the sum which is calculated at each step 
  // while converting from octal to decimal
  int sum = 0;


  while (temp > 0) {


    // this will give the rightmost digit
    // e.g. 467%10 will give 7.
    int rightMostDigit = temp % 10;


    sum += rightMostDigit * pow(8, position);


    // increment position so that we move on to the next digit on the left hand side
    position++;


    // this will remove the rightmost digit
    // e.g. 467/10 = 46
    temp = temp / 10;
  }


  return sum;
}


// main function where the code is tested
int main() {
  int num;
  cout << "Enter an Octal Number.\n";
  cin >> num;

  int decimalForm = octalToDecimal(num);

  cout << "The Decimal form of the given octal number is : " << decimalForm;

  return 0;
}
You can also try this code with Online C++ Compiler
Run Code

Input

467

Output

Enter an Octal Number.

467

The Decimal form of the given octal number is : 311

Time Complexity

The time complexity is O(number of digits), because the loop iterates for the number of times equal to the number of digits.

Space Complexity

The space complexity is O(1), because no extra space is used.

Try and compile by yourself with the help of online C++ Compiler for better understanding.

Read More - Time Complexity of Sorting Algorithms

If The Input is In The Form of String

Since the value passed in the octalToDecimal() function is an integer, we cannot provide a very large value of the octal number to the function. Consider an example where we have an octal number whose length is 35 or even more. An integer type variable cannot store such a huge number. The best way is to take such a number in string format as input and do computation and accordingly convert it to decimal.

Code

// C++ program to convert an octal string to Decimal
#include <iostream>
#include <string>
#include <cmath>
using namespace std;


// this function receives a string in octal form 
// and returns the corresponding integer value in decimal form
int octalToDecimal(string octalNum){
    string num = octalNum;
    
    // position variable to keep track of the position of the bits
    // from right to left, position increases from 0, 1, 2,...,n
    int position = 0;
    
    int sum=0;
    
    // length() determines the length of the given string
    int len = num.length();
    for(int i= len-1; i>=0;i--){
        
        // the digit variable stores the numeric value by subtracting '0' as a character.
        int digit= num[i]-'0';
        
        // at each step sum is calculated
        sum+= digit * pow(8, position);
        
        // increment the position variable
        position++;
    }
    
    // return the sum. It is the decimal form of the octal string provided.
    return sum;
}


int main() {
    
    string octalNum;
    cout<<"Enter an Octal number.\n";
    cin>>octalNum;
    
    int decimal = octalToDecimal(octalNum);
    
    cout<<"The decimal form is : "<<decimal;

    return 0;
}
You can also try this code with Online C++ Compiler
Run Code

Input 

651472365

Output

Enter an Octal number.

651472365

The decimal form is : 111572213

Time Complexity

The time complexity is O(number of digits), because the loop iterates for the number of times equal to the number of digits.

Space Complexity

The space complexity is O(1), because no extra space is used.

Alternate Way

Instead of using pow(8, position), we can use a base variable that will be multiplied by 8 after every iteration.

Code

// C++ program to convert Octal string to Decimal 
// without using pow() function
#include <iostream>
#include <string>
using namespace std;


// this function receives a string in Octal form 
// and returns the corresponding integer value in decimal form
int octalToDecimal(string octalNum){
    string num = octalNum;
    
    // this represents the rightmost position.
    // observe that we have assigned base=1 and not 0
    // because at position =0 
    // pow(8,0)=1
    int base= 1;
    
    int sum=0;
    
    // length() determines the length of the given string
    int len = num.length();
    for(int i= len-1; i>=0;i--){
        
        // the digit variable stores the numeric value by subtracting '0' as a character.
        int digit = num[i]-'0';
        
        /* In the first iteration the digit will be multiplied by 1
           In the second iteration the digit will be multiplied by 8
           .
           .
           .
           In the nth iteration the digit will be multiplied by 8^(n-1)
        */
        sum+= digit*base;
        
        // multiply base by 8 after every iteration
        base= base *8;
    }
    
    // return the sum. This is the decimal form of the given octal string
    return sum;
}


int main() {
    
    string octalNum;
    cout<<"Enter an Octal number.\n";
    cin>>octalNum;
    
    int decimal = octalToDecimal(octalNum);
    
    cout<<"The decimal form is : "<<decimal;

    return 0;
}
You can also try this code with Online C++ Compiler
Run Code

Input 

563274156

Output

Enter the binary number.

563274156

The decimal form is : 97351790

Time Complexity

The time complexity is O(number of digits), because the loop iterates for the number of times equal to the number of digits.

Space Complexity

The space complexity is O(1), because no extra space is used.

Using Predefined Function

We can use the stoi() function in C++ to convert an Octal number given as a string into a decimal number.

Code

// using stoi() in C++ to convert Octal to decimal
#include <iostream>
using namespace std;


int main() {
    
    string octalNum;
    cout<<"Enter an Octal number.\n";
    cin>> octalNum;
    
    // C++ stoi() convert Octal string to decimal  
    int decimal = stoi(octalNum, 0, 8);
    
    cout<<"The decimal form is : "<<decimal;
    
    return 0;
}
You can also try this code with Online C++ Compiler
Run Code

Input 

4675677

Output 

Enter an Octal number.

4675677

The decimal form is : 1276863

Time Complexity

The time complexity of stoi() function is O(number of digits).

Space Complexity

The space complexity is O(1), because no extra space is used.

Check out this article - C++ String Concatenation

Must read decimal to binary c++ and, Dynamic Binding in C++.

Frequently Asked Questions

What is an Octal number?

The octal number system is made up of eight different numerals, from 0 to 7. The octal numbers have a base of 8.

What is the base of Octal numbers?

The base of an octal number is 8.

Which predefined function in C++ can be used to convert an Octal string into a decimal number?

We can use the stoi() function in C++ to convert an octal string into a decimal number.

What will be the value of the octal number 763254637 in the decimal system?

130898335

Conclusion

In this article, we have discussed what Octal numbers are and the C++ program to convert octal numbers to decimal numbers. You should definitely read this blog to get a more clear understanding of number systems.

Refer to our guided paths on Code Studio to upskill yourself in Data Structures and AlgorithmsCompetitive ProgrammingJavaScriptSystem Design, and many more! If you want to test your competency in coding, you may check out the mock test series and participate in contests hosted on Code Studio! But if you have just started your learning process and looking for questions asked by tech giants like Amazon, Microsoft, Uber, etc., you must have a look at the problemsinterview experiences, and interview bundle for placement preparations.

Nevertheless, you may consider our paid courses to give your career an edge over others! 

Do upvote our blog if you find them helpful and engaging!

Happy Learning!

Live masterclass