首页  > 教育解读  > java十进制怎么转成二进制

java十进制怎么转成二进制

2025-05-01 07:48:16
星海幻梦
星海幻梦已认证

星海幻梦为您分享以下优质知识

在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`类。

负数处理:上述方法仅适用于非负整数。若需处理负数,需结合补码表示进行转换。

通过以上方法,可灵活选择内置函数或自定义算法实现十进制与二进制的转换。