HOWTO · Java
在 Java 中将 Int 转换为二进制
本文介绍了在 Java 中将 int 转换为二进制的方法
本页内容
在 Java 中,将 int 转换为二进制 String,通常可使用 Integer.toBinaryString(value);需要指定基数时可使用 Integer.toString(value, 2);若要说明转换算法,也可以使用 StringBuilder 循环。下文将介绍每种方法返回的表示形式,以及手动循环的适用范围。
在 Java 中使用 Integer.toBinaryString() 将 Int 转换为二进制
Integer.toBinaryString() 接受一个 int,并以 String 返回其二进制数字。以 150 为例,结果不含前导零,表示为 10010110。如果只需要整数的二进制表示,这种方法简洁直接。
运行以下示例:
本节中的代码以及显示的标签或输出仍为英文。
public class JavaExample {
public static void main(String[] args) {
int value = 150;
String binary = Integer.toBinaryString(value);
System.out.println(binary);
}
}
10010110
对于负 int,此方法返回 32 位二进制补码表示,并在需要时包含前导 1 位。这种固定宽度的结果不同于带负号的有符号二进制数。
在 Java 中使用 Integer.toString() 将 Int 转换为二进制
Integer.toString(value, radix) 会根据给定的基数将值转换为字符串。二进制使用基数 2。对于正整数,它生成的数字形式与 Integer.toBinaryString() 相同,也不带前导零。如果较大的转换流程会把基数作为参数,这个重载方法就很实用。
运行以下示例:
本节中的代码以及显示的标签或输出仍为英文。
public class JavaExample {
public static void main(String[] args) {
int value = 200;
String binary = Integer.toString(value, 2);
System.out.println(binary);
}
}
11001000
对于负值,Integer.toString(value, 2) 会在绝对值对应的数字前加上负号。如果调用方需要这种带符号的表示形式,就可以选择此方法。两种库方法都接受 Java int 的取值范围;对于正值,它们都不会按指定显示宽度补足前导零。
在 Java 中使用 StringBuilder 和循环将 Int 转换为二进制
手动转换可以展示每一位数字是如何得到的。此实现只接受非负值。它会单独处理零,因为如果循环条件是值大于零,输入零时就不会追加任何数字。对于其他输入,反复除以二会得到 0 或 1 的余数,顺序从最低有效位到最高有效位。因此,返回结果前需要将收集到的数字反转。
以下示例使用一个非负值:
本节中的代码以及显示的标签或输出仍为英文。
public class JavaExample {
static String convertIntToBinary(int value) {
if (value < 0) {
throw new IllegalArgumentException("value must be nonnegative");
}
if (value == 0) {
return "0";
}
StringBuilder digits = new StringBuilder();
while (value > 0) {
digits.append(value % 2);
value /= 2;
}
return digits.reverse().toString();
}
public static void main(String[] args) {
System.out.println(convertIntToBinary(150));
}
}
10010110
手动方法适合学习反复除法的过程,也便于针对特定表示形式进行调整。显式的输入检查可避免负数悄悄得到空字符串。一般情况下,若要转换带符号的整数,建议使用其中一种库方法,并根据所需的负数表示形式来选择。