在32位二进制数的开头添加零。

时间:2014-01-03 16:08:37

标签: java

我有一个将十进制数转换为二进制数的程序。 我希望二进制表示有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));
        }
    }
}

3 个答案:

答案 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.formatStringBuilder

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'符号替换空格。