我有一个将十进制数转换为二进制数的程序。 我希望二进制表示有32位数,所以我经常需要在二进制表示的开头添加0。我怎样才能实现它?
示例:
decimal:
9999999
binary:
00000000 01001100 01001011 00111111
这是我已有的代码: 代码:
class Binaer {
public static void main(String [] args) {
java.util.Scanner scanner = new java.util.Scanner(System.in);
long a = scanner.nextLong();
while ( a != 0) {
System.out.println(Integer.toBinaryString(a));
}
}
}
答案 0 :(得分:2)
简单,只需使用String.format
:
public static void main(String[] args) throws InterruptedException {
final int i = 7;
final String s = String.format("%32s", Integer.toBinaryString(i)).replace(' ', '0');
System.out.println(s);
}
第一位 - String.format("%32s", Integer.toBinaryString(i))
- 将int
格式化为二进制String
,从开头填充到32个字符。第二位 - replace(' ', '0')
- 用零替换前导空格。
答案 1 :(得分:0)
您可以使用String.format
或StringBuilder
:
java.util.Scanner scanner = new java.util.Scanner(System.in);
int a = scanner.nextInt();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < Integer.numberOfLeadingZeros(a); i++)
sb.append('0');
sb.append(Integer.toBinaryString(a));
System.out.println(sb.toString());
答案 2 :(得分:0)
首先,如果使用Integer.toBinaryString(a),那么a必须是Integer。然后,您可以使用String.format填充收到的String:
number = Integer.toBinaryString(a);
paddedNumber = String.format("%32s", number).replace(' ', 0);
如果需要,格式将通过在开头添加空格来确保paddedNumber有32个符号。然后replace将用'0'符号替换空格。