我有一个数字,我想把它打印成二进制。我不想通过写算法来实现。
Java中有没有内置函数?
我有一个数字,我想把它打印成二进制。我不想通过写算法来实现。
Java中有没有内置函数?
当前回答
您可以使用位掩码(1<< k)和与数字做与操作! 1 << k在k位有1位!
private void printBits(int x) {
for(int i = 31; i >= 0; i--) {
if((x & (1 << i)) != 0){
System.out.print(1);
}else {
System.out.print(0);
}
}
System.out.println();
}
其他回答
假设你指的是“内置”:
int x = 100;
System.out.println(Integer.toBinaryString(x));
请参阅整型文档。
(Long有一个类似的方法,BigInteger有一个实例方法,你可以在其中指定基数。)
“ 长k = 272214023L;
字符串长= String.format(64年代“%”,Long.toBinaryString (k)。替换(',' 0 ');
String long1 = String.format("%64s",Long.toBinaryString(k))。replace(' ','0').replaceAll("(\d{8})","$1 "); ` 打印: 0000000000000000000000000000000000000000000
00000000 00000000 00000000 00000000 00000000 0000000
这是我格式化Integer输出的方式。toBinaryString方法:
public String toBinaryString(int number, int groupSize) {
String binary = Integer.toBinaryString(number);
StringBuilder result = new StringBuilder(binary);
for (int i = 1; i < binary.length(); i++) {
if (i % groupSize == 0) {
result.insert(binary.length() - i, " ");
}
}
return result.toString();
}
toBinaryString(0xABFABF, 8)的结果是“10101011 11111010 10111111” 对于toBinaryString(0xABFABF, 4)是“1010 1011 1111 1010 1011 1111”
我需要一些东西可以很好地打印出来,并把每n位的比特分开。换句话说,显示前导零并显示如下内容:
n = 5463
output = 0000 0000 0000 0000 0001 0101 0101 0111
我是这么写的:
/**
* Converts an integer to a 32-bit binary string
* @param number
* The number to convert
* @param groupSize
* The number of bits in a group
* @return
* The 32-bit long bit string
*/
public static String intToString(int number, int groupSize) {
StringBuilder result = new StringBuilder();
for(int i = 31; i >= 0 ; i--) {
int mask = 1 << i;
result.append((number & mask) != 0 ? "1" : "0");
if (i % groupSize == 0)
result.append(" ");
}
result.replace(result.length() - 1, result.length(), "");
return result.toString();
}
像这样调用它:
public static void main(String[] args) {
System.out.println(intToString(5463, 4));
}
public static void main(String[] args)
{
int i = 13;
short s = 13;
byte b = 13;
System.out.println("i: " + String.format("%32s",
Integer.toBinaryString(i)).replaceAll(" ", "0"));
System.out.println("s: " + String.format("%16s",
Integer.toBinaryString(0xFFFF & s)).replaceAll(" ", "0"));
System.out.println("b: " + String.format("%8s",
Integer.toBinaryString(0xFF & b)).replaceAll(" ", "0"));
}
输出:
i: 00000000000000000000000000001101
s: 0000000000001101
b: 00001101