Integer.toBinaryString()是Java中将int转二进制字符串的标准方法,对非负数返回无前导零的纯二进制串(如5→"101"),负数则返回32位补码形式(如-1→32个1),不带符号位或前缀,需补零或带符号表示须手动处理。

Integer.toBinaryString() 是 Java 中最直接、最常用的方式,将一个 int 类型的十进制整数转为不带前导零的二进制字符串表示。它处理的是该整数的**无符号二进制值**,对正数和负数都有效,但需注意负数会以补码形式输出完整 32 位(实际只返回有效高位起始部分,不补前导零)。
基本用法:一步到位转换
只需传入一个 int 值,方法自动返回对应的二进制字符串:
- Integer.toBinaryString(10) → "1010"
- Integer.toBinaryString(0) → "0"
- Integer.toBinaryString(-1) → "11111111111111111111111111111111"(32 个 1,即 -1 的补码)
注意负数的补码行为
Java 中 int 是 32 位有符号类型,toBinaryString() 不做符号扩展截断,也不加负号,而是如实输出该整数在内存中的补码二进制形式(去掉最高位连续的 0)。例如:
- Integer.toBinaryString(-2) → "11111111111111111111111111111110"
- 若你只需要“绝对值的二进制 + 负号”,可手动处理:"-" + Integer.toBinaryString(2) → "-10"
补零到固定位宽(如 8 位、16 位)
该方法默认不补零,如需统一长度(比如用于协议或显示),可用 String.format 或 StringBuilder 补齐:
立即学习“Java免费学习笔记(深入)”;
- 补成 8 位:String.format("%8s", Integer.toBinaryString(5)).replace(' ', '0') → "00000101"
- 更健壮写法(避免长度不足时出错):
String binary = Integer.toBinaryString(n);
String padded = String.format("%" + width + "s", binary).replace(' ', '0');
与其它方式对比:为什么首选 toBinaryString?
相比手动循环取余、使用 BitSet 或 String.valueOf(n, 2),toBinaryString() 是 JDK 内置、高效、经过充分测试的标准方法,无需额外依赖,语义清晰,且能正确处理边界值(如 0、Integer.MIN_VALUE)。


















