在Java中,将十进制数转换为二进制数主要有以下两种方法:
一、使用`Integer`类内置方法
Java提供了`Integer`类的两个便捷方法实现十进制与二进制的转换:
`Integer.toBinaryString(int i)` 将十进制整数转换为二进制字符串。例如:
```java
int num = 255;
String binaryStr = Integer.toBinaryString(num);
System.out.println(binaryStr); // 输出: 11111111
```
该方法适用于整数转换,且代码简洁高效。
`Integer.parseInt(String s, int radix)`
将指定进制的字符串转换为十进制整数,可逆向用于二进制转换。例如:
```java
String hexStr = "0x3E8";
int decimalNum = Integer.parseInt(hexStr.substring(2), 16);
System.out.println(decimalNum); // 输出: 10011100
```
需注意去掉字符串前缀(如`0x`),并指定基数为16。
二、手动实现“除2取余”算法
若需自定义转换过程,可通过以下步骤实现:
使用循环除2取余
通过不断将数字除以2并记录余数,最后将余数逆序排列。例如:
```java
public static String decimalToBinary(int n) {
StringBuilder binary = new StringBuilder();
while (n > 0) {
int remainder = n % 2;
binary.insert(0, remainder); // 将余数插入到字符串开头
n = n / 2;
}
return binary.toString();
}
public static void main(String[] args) {
int num = 123;
String binaryStr = decimalToBinary(num);
System.out.println(binaryStr); // 输出: 1111011
}
```
该算法遵循数学逻辑,适合教学和理解进制转换原理。
使用位运算符
通过位移和按位与操作实现转换。例如:
```java
public static String decimalToBinary(int n) {
StringBuilder binary = new StringBuilder(32); // 32位整数
for (int i = 31; i >= 0; i--) {
binary.insert(0, (n & 1) == 1 ? '1' : '0');
n >>= 1;
}
return binary.toString().replaceFirst("^0+(?!$)", ""); // 去除前导零
}
public static void main(String[] args) {
int num = 255;
String binaryStr = decimalToBinary(num);
System.out.println(binaryStr); // 输出: 11111111
}
```
该方法利用了二进制数的位权特性,效率较高且可处理负数(需额外处理符号位)。
注意事项
数据范围限制: `Integer`类方法仅支持`-2^31`到`2^31-1`之间的整数转换,超出范围需使用`Long`类或`BigInteger`类。 负数处理
通过以上方法,可灵活选择内置函数或自定义算法实现十进制与二进制的转换。