最简单直接的方法是用 Integer.toBinaryString(),返回无前缀二进制字符串;正数如10输出"1010",负数输出32位补码;固定位宽需手动补零,大数用BigInteger.toString(2)。

Java 中把十进制数转为二进制输出,最简单直接的方法是用 Integer.toBinaryString() 方法,它返回不带前缀的纯二进制字符串。
用内置方法快速转换
这是最常用、最推荐的方式,适用于 int 类型(包括负数,但会以补码形式输出):
-
正数示例:
System.out.println(Integer.toBinaryString(10));→ 输出1010 -
负数示例:
System.out.println(Integer.toBinaryString(-5));→ 输出11111111111111111111111111111011(32 位补码) - 如果只要 8 位或固定位宽,需手动补零,比如用
String.format("%8s", ...).replace(' ', '0')
手动实现除 2 取余法(适合理解原理)
对非负整数,可通过循环“除以 2 取余,逆序拼接”来模拟手算过程:
- 每次取
n % 2得当前位(0 或 1),然后n = n / 2 - 用 StringBuilder 累加余数,最后
.reverse()得到正确顺序 - 注意:输入为 0 时要单独处理,否则循环不执行,结果为空字符串
处理 long 类型或大数
对于 long 类型,用 Long.toBinaryString();若数值超出 long 范围(如超大整数),应使用 BigInteger:
new BigInteger("123456789012345").toString(2)- 该方式支持任意精度整数,且
toString(2)返回无符号二进制字符串
控制输出格式(补零、加前缀等)
默认输出不含 0b 前缀,也不补零。如需标准化显示:
- 加
0b前缀:"0b" + Integer.toBinaryString(10)→0b1010 - 补足 8 位:
String.format("%8s", Integer.toBinaryString(5)).replace(' ', '0')→00000101 - Java 17+ 可用
String.format("%08s", ...)直接左补零
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











