Decimal to Octal Conversion in Java
Decimal to Octal Conversion
Decimal to Octal conversion is the process of converting a decimal number (base-10) into its equivalent octal number (base-8). Each octal digit represents a power of 8.
For example, the decimal number 31 is equal to octal 37 because:
(3 × 8¹) + (7 × 8⁰) = 24 + 7 = 31
We will explore three methods to convert a decimal number to an octal number using Java programming.
Method 1: Using Division by 8
We divide the decimal number by 8 repeatedly, storing the remainders. These remainders represent the digits of the octal number from least significant to most significant.
import java.util.Scanner; public class Main { public static void decimalToOctal(int decimal) { int[] octal = new int[50]; int i = 0; while (decimal > 0) { octal[i] = decimal % 8; decimal = decimal / 8; i++; } System.out.print("Octal equivalent: "); for (int j = i - 1; j >= 0; j--) { System.out.print(octal[j]); } System.out.println(); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter a decimal number: "); int decimal = scanner.nextInt(); decimalToOctal(decimal); scanner.close(); } }
Output:
Enter a decimal number: 31 Octal equivalent: 37
Method 2: Using Integer.toOctalString()
Java provides a built-in method Integer.toOctalString() to directly convert a decimal number to its octal string representation.
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter a decimal number: "); int decimal = scanner.nextInt(); String octal = Integer.toOctalString(decimal); System.out.println("Octal equivalent: " + octal); scanner.close(); } }
Output:
Enter a decimal number: 31 Octal equivalent: 37
Method 3: Using Recursion
We can convert a decimal number to octal recursively. The recursive function divides the number by 8 and prints the remainders, which form the octal digits.
import java.util.Scanner; public class Main { public static void decimalToOctalRecursive(int decimal) { if (decimal == 0) { return; } decimalToOctalRecursive(decimal / 8); System.out.print(decimal % 8); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter a decimal number: "); int decimal = scanner.nextInt(); if (decimal == 0) { System.out.println("Octal equivalent: 0"); } else { System.out.print("Octal equivalent: "); decimalToOctalRecursive(decimal); System.out.println(); } scanner.close(); } }
Output:
Enter a decimal number: 31 Octal equivalent: 37