DEV Community

Vigneshwaralingam
Vigneshwaralingam

Posted on

Programming Session Day 8: Manual Octal and Decimal Conversion in Java

Day 8: Manual Octal ↔ Decimal Conversion with Integers Only

1. Octal → Decimal (Input as int)

public static int octalToDecimal(int octal) { int decimal = 0; int place = 1; // 8^0 initially while (octal > 0) { int digit = octal % 10; // rightmost digit (0–7) decimal += digit * place; // add digit * current power of 8 place *= 8; // next power of 8 octal /= 10; // shift right one digit } return decimal; } // Example: System.out.println(octalToDecimal(17)); // prints 15 
Enter fullscreen mode Exit fullscreen mode

How it works

  • % 10 extracts the least-significant digit of the octal number.
  • place tracks powers of 8 (1, 8, 64, ...).
  • Multiply digit by place, add to total, then update both place and octal.

2. Decimal → Octal (Output as int)

public static int decimalToOctal(int decimal) { int octal = 0; int factor = 1; // 10^0 for placing digits in decimal slots while (decimal > 0) { int remainder = decimal % 8; // next octal digit octal += remainder * factor; // place digit at correct decimal position decimal /= 8; // move to next digit in base 8 factor *= 10; // shift factor to next decimal place (10, 100, ...) } return octal; } // Example: System.out.println(decimalToOctal(15)); // prints 17 
Enter fullscreen mode Exit fullscreen mode

How it works

  • % 8 gets the least-significant octal digit.
  • Each digit is placed in the decimal representation by multiplying by factor (1, 10, 100, ...).
  • Update decimal, and increase factor for the next digit.

3. Complete Utility Class

public class ManualBaseConverter { public static int octalToDecimal(int octal) { int decimal = 0; int place = 1; while (octal > 0) { int digit = octal % 10; decimal += digit * place; place *= 8; octal /= 10; } return decimal; } public static int decimalToOctal(int decimal) { int octal = 0; int factor = 1; while (decimal > 0) { int remainder = decimal % 8; octal += remainder * factor; decimal /= 8; factor *= 10; } return octal; } public static void main(String[] args) { System.out.println("Octal 17 → Decimal " + octalToDecimal(17)); System.out.println("Decimal 15 → Octal " + decimalToOctal(15)); } } 
Enter fullscreen mode Exit fullscreen mode

Day 8 Key Takeaways

  • Pure integer arithmetic: no string operations or library calls.
  • Octal → Decimal: extract digits with %10, accumulate using an ever‑increasing place multiplier of 8.
  • Decimal → Octal: extract base‑8 digits with %8, build the octal number in decimal slots via an increasing factor multiplier of 10.

Top comments (0)