Recursive Number Conversion in Java: Decimal, Binary, Octal, and Hexadecimal
Introduction
In this blog post, we will explore recursive methods for converting numbers between different representations in Java. We will cover the conversions between decimal, binary, octal, and hexadecimal numbers. The provided code demonstrates these conversions and allows user input for enhanced interactivity.
Code Implementation
import java.util.Scanner;
public class Main {
// Decimal to Binary conversion using recursion
public static String decimalToBinary(int decimal) {
if (decimal == 0) {
return "0";
} else if (decimal == 1) {
return "1";
} else {
return decimalToBinary(decimal / 2) + String.valueOf(decimal % 2);
}
}
// Binary to Decimal conversion using recursion
public static int binaryToDecimal(String binary) {
return binaryToDecimalHelper(binary, 0, binary.length() - 1);
}
private static int binaryToDecimalHelper(String binary, int result, int index) {
if (index < 0) {
return result;
} else {
int digit = binary.charAt(index) - '0';
result += digit * Math.pow(2, binary.length() - 1 - index);
return binaryToDecimalHelper(binary, result, index - 1);
}
}
// Decimal to Octal conversion using recursion
public static String decimalToOctal(int decimal) {
if (decimal < 8) {
return String.valueOf(decimal);
} else {
return decimalToOctal(decimal / 8) + String.valueOf(decimal % 8);
}
}
// Decimal to Hexadecimal conversion using recursion
public static String decimalToHexadecimal(int decimal) {
if (decimal < 16) {
return toHexChar(decimal);
} else {
return decimalToHexadecimal(decimal / 16) + toHexChar(decimal % 16);
}
}
private static String toHexChar(int digit) {
if (digit < 10) {
return String.valueOf(digit);
} else {
return String.valueOf((char) ('A' + digit - 10));
}
}
// Hexadecimal to Binary conversion using recursion
public static String hexadecimalToBinary(String hexadecimal) {
return decimalToBinary(hexadecimalToDecimal(hexadecimal));
}
// Hexadecimal to Decimal conversion using recursion
public static int hexadecimalToDecimal(String hexadecimal) {
return hexadecimalToDecimalHelper(hexadecimal, 0, hexadecimal.length() - 1);
}
private static int hexadecimalToDecimalHelper(String hexadecimal, int result, int index) {
if (index < 0) {
return result;
} else {
char digit = hexadecimal.charAt(index);
int value;
if (Character.isDigit(digit)) {
value = digit - '0';
} else {
value = 10 + (digit - 'A');
}
result += value * Math.pow(16, hexadecimal.length() - 1 - index);
return hexadecimalToDecimalHelper(hexadecimal, result, index - 1);
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Input decimal number
System.out.print("Enter a decimal number: ");
int decimal = scanner.nextInt();
// Decimal to Binary
String decimalToBinaryResult = decimalToBinary(decimal);
System.out.println(decimal + " in binary: " + decimalToBinaryResult);
// Binary to Decimal
System.out.print("Enter a binary number: ");
String binary = scanner.next();
int binaryToDecimalResult = binaryToDecimal(binary);
System.out.println(binary + " in decimal: " + binaryToDecimalResult);
// Decimal to Octal
String decimalToOctalResult = decimalToOctal(decimal);
System.out.println(decimal + " in octal: " + decimalToOctalResult);
// Decimal to Hexadecimal
String decimalToHexadecimalResult = decimalToHexadecimal(decimal);
System.out.println(decimal + " in hexadecimal: " + decimalToHexadecimalResult);
// Hexadecimal to Binary
System.out.print("Enter a hexadecimal number: ");
String hexadecimal = scanner.next();
String hexadecimalToBinaryResult = hexadecimalToBinary(hexadecimal);
System.out.println(hexadecimal + " in binary: " + hexadecimalToBinaryResult);
scanner.close();
}
}
Explanation and Usage
The above code defines a Java class called Main
that contains methods for recursive number conversions. Let's go through each conversion method and its usage:
- Decimal to Binary Conversion:
- Method:
decimalToBinary(int decimal)
- Usage:
String decimalToBinaryResult = decimalToBinary(decimal);
2. Binary to Decimal Conversion:
- Method:
binaryToDecimal(String binary)
- Usage:
int binaryToDecimalResult = binaryToDecimal(binary);
3. Decimal to Octal Conversion:
- Method:
decimalToOctal(int decimal)
- Usage:
String decimalToOctalResult = decimalToOctal(decimal);
4. Decimal to Hexadecimal Conversion:
- Method:
decimalToHexadecimal(int decimal)
- Usage:
String decimalToHexadecimalResult = decimalToHexadecimal(decimal);
5. Hexadecimal to Binary Conversion:
- Method:
hexadecimalToBinary(String hexadecimal)
- Usage:
String hexadecimalToBinaryResult = hexadecimalToBinary(hexadecimal);
6. Hexadecimal to Decimal Conversion:
- Method:
hexadecimalToDecimal(String hexadecimal)
- Usage:
int hexadecimalToDecimalResult = hexadecimalToDecimal(hexadecimal);
The main
method demonstrates the usage of these conversion methods with user input. It prompts the user to enter decimal, binary, and hexadecimal numbers and performs the corresponding conversions, displaying the results on the console.
Conclusion
In this blog post, we explored the implementation of recursive methods for number conversion in Java. We discussed the conversions between decimal, binary, octal, and hexadecimal numbers. The provided code allowed user input, enhancing interactivity and enabling users to experiment with different numbers and conversions. By understanding these recursive algorithms, you can efficiently convert numbers between different representations and gain a deeper understanding of number systems in Java.
Thanks for Reading ❤❤