在Java中以二进制格式打印整数

321

我有一个数字,想要将它以二进制形式打印出来。我不想通过编写算法来实现。

在Java中是否有内置函数可以实现这个功能?


1
在这里提到的Integer.toBinaryString(i),将整数i转换为二进制字符串。 - lingar
25个回答

0
这是将整数转换为二进制的最简单方法。

System.out.println(Integer.toBinaryString(111));


0
    for(int i = 1; i <= 256; i++)
    {
        System.out.print(i + " "); //show integer
        System.out.println(Integer.toBinaryString(i) + " "); //show binary
        System.out.print(Integer.toOctalString(i) + " "); //show octal
        System.out.print(Integer.toHexString(i) + " "); //show hex

    }

3
非常感谢您的回答,但请增加更多的描述和/或信息,以及它是如何解决所问的问题,这样其他人就不需要询问澄清就能轻松理解它 :) - koceeng

0

我认为这是目前最简单的算法(适用于不想使用内置函数的人):

public static String convertNumber(int a)  { 
              StringBuilder sb=new StringBuilder();
              sb.append(a & 1);
              while ((a>>=1) != 0)  { 
                  sb.append(a & 1);
               }
              sb.append("b0");
              return sb.reverse().toString();
  }

示例:

convertNumber(1) --> "0b1"

convertNumber(5) --> "0b101"

convertNumber(117) --> "0b1110101"

工作原理:while循环将一个数字向右移动(用第二个到最后一个替换最后一个),获取最后一位的值并将其放入StringBuilder中,重复此过程直到没有位剩余(当a=0时)。


-2

它可以处理有符号和无符号值,使用强大的位操作,并在左侧生成第一个零。

public static String representDigits(int num) {

        int checkBit = 1 << (Integer.SIZE * 8 - 2 );    // avoid the first digit        
        StringBuffer sb = new StringBuffer();

        if (num < 0 ) {     // checking the first digit
            sb.append("1");
        } else {
            sb.append("0");
        }

        while(checkBit != 0) {          
            if ((num & checkBit) == checkBit){
                sb.append("1");
            } else {
                sb.append("0");
            }           
            checkBit >>= 1;     
        }       

        return sb.toString();
    }

-2

`long k = 272214023L;

String long = String.format("%64s",Long.toBinaryString(k)).replace(' ','0');

String long1 = String.format("%64s",Long.toBinaryString(k)).replace(' ','0').replaceAll("(\d{8})","$1 "); ` print : 0000000000000000000000000000000000000000000

00000000 00000000 00000000 00000000 0000000

`


1
目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接