Octal to Decimal Conversion in C++
Octal to Decimal Conversion
Octal to Decimal conversion is the process of converting an octal number (base-8) into its equivalent decimal number (base-10). Each octal digit represents a power of 8.
For example, the octal number 17 is equal to decimal 15 because:
(1 × 8¹) + (7 × 8⁰) = 8 + 7 = 15
We will explore three methods to convert an octal number to a decimal number using C++ programming.
Method 1: Using Loop
We extract each digit of the octal number, multiply it by the corresponding power of 8, and sum the results.
#include <iostream> #include <cmath> using namespace std; int octalToDecimal(long long octal) { int decimal = 0, i = 0; while (octal != 0) { int lastDigit = octal % 10; decimal += lastDigit * pow(8, i); octal /= 10; i++; } return decimal; } int main() { long long octal; cout << "Enter an octal number: "; cin >> octal; cout << "Decimal equivalent: " << octalToDecimal(octal); return 0; }
Output:
Enter an octal number: 17 Decimal equivalent: 15
Method 2: Using Built-in Function
We can use stringstream to directly convert an octal number to a decimal number.
#include <iostream> #include <sstream> using namespace std; int main() { int decimal; string octal; cout << "Enter an octal number: "; cin >> octal; stringstream ss; ss << octal; ss >> oct >> decimal; cout << "Decimal equivalent: " << decimal; return 0; }
Output:
Enter an octal number: 17 Decimal equivalent: 15
Method 3: Using Recursion
We recursively extract each digit and multiply it by the corresponding power of 8.
#include <iostream> #include <cmath> using namespace std; int octalToDecimalRecursive(long long octal, int power) { if (octal == 0) return 0; return (octal % 10) * pow(8, power) + octalToDecimalRecursive(octal / 10, power + 1); } int main() { long long octal; cout << "Enter an octal number: "; cin >> octal; cout << "Decimal equivalent: " << octalToDecimalRecursive(octal, 0); return 0; }
Output:
Enter an octal number: 17 Decimal equivalent: 15