
面试高老师为您分享以下优质知识
在Java中,将十进制数转换为二进制数有多种方法,以下是常用且推荐的方式:
一、使用内置方法转换
Java提供了`Integer`类的内置方法,可快速完成转换:
将十进制整数转换为二进制字符串,例如:
```java
int num = 255;
String binaryStr = Integer.toBinaryString(num);
System.out.println(binaryStr); // 输出: 11111111
```
该方法适用于正整数转换,对于负数会返回补码形式。
toString(int radix)
支持任意进制转换,基数为2时效果与`toBinaryString()`相同:
```java
String binaryStr = Integer.toString(num, 2);
System.out.println(binaryStr);
```
二、手动实现转换
若需理解转换原理,可手动实现"除2取余,逆序排列"算法:
迭代法
通过循环将十进制数除以2,记录余数并逆序输出:
```java
import java.util.Scanner;
public class DecimalToBinary {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个十进制数: ");
int num = scanner.nextInt();
scanner.close();
StringBuilder binary = new StringBuilder();
while (num >
0) {
int remainder = num % 2;
binary.insert(0, remainder); // 将余数插入字符串开头
num /= 2;
}
System.out.println("二进制数为: " + binary.toString());
}
}
```
该算法通过不断取余和整除操作,将余数按逆序组合成二进制数。
移位操作法
利用位移和掩码操作实现转换:
```java
public void binaryToDecimal(int n) {
StringBuilder binary = new StringBuilder();
for (int i = 31; i >
= 0; i--) {
int bit = (n >
>
i) & 1;
binary.insert(0, bit);
}
System.out.println(binary.toString());
}
```
该方法通过右移操作提取每一位二进制位,并使用掩码判断当前位是0还是1。
三、注意事项
数据类型限制:
`int`类型最大可表示$2^{31}-1$的十进制数,超过范围会导致溢出。对于更大数值,建议使用`long`类型或`String`存储二进制结果。
负数处理:`Integer.toBinaryString()`会返回负数的补码形式,若需得到原码,需手动处理符号位。
通过以上方法,可灵活实现十进制与二进制之间的转换,根据需求选择内置方法或手动实现即可。