我有一个数字,想要将它以二进制形式打印出来。我不想通过编写算法来实现。
在Java中是否有内置函数可以实现这个功能?
我有一个数字,想要将它以二进制形式打印出来。我不想通过编写算法来实现。
在Java中是否有内置函数可以实现这个功能?
System.out.println(Integer.toBinaryString(111));
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
}
我认为这是目前最简单的算法(适用于不想使用内置函数的人):
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时)。
它可以处理有符号和无符号值,使用强大的位操作,并在左侧生成第一个零。
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();
}
`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
`