我有一个数字,我想把它打印成二进制。我不想通过写算法来实现。
Java中有没有内置函数?
我有一个数字,我想把它打印成二进制。我不想通过写算法来实现。
Java中有没有内置函数?
当前回答
假设你指的是“内置”:
int x = 100;
System.out.println(Integer.toBinaryString(x));
请参阅整型文档。
(Long有一个类似的方法,BigInteger有一个实例方法,你可以在其中指定基数。)
其他回答
由于没有答案被接受,也许您的问题是关于如何在二进制文件中存储整数。 dataoutputstream可能就是您要找的:https://docs.oracle.com/javase/8/docs/api/java/io/DataOutputStream.html
DataOutputStream os = new DataOutputStream(outputStream);
os.writeInt(42);
os.flush();
os.close();
给定int x的左填充零的二进制表示:
org.apache.commons.lang3.StringUtils.leftPad(Integer.toBinaryString(x), 32, '0')
解决方案使用32位显示掩码,
public static String toBinaryString(int n){
StringBuilder res=new StringBuilder();
//res= Integer.toBinaryString(n); or
int displayMask=1<<31;
for (int i=1;i<=32;i++){
res.append((n & displayMask)==0?'0':'1');
n=n<<1;
if (i%8==0) res.append(' ');
}
return res.toString();
}
System.out.println(BitUtil.toBinaryString(30));
O/P:
00000000 00000000 00000000 00011110
tostring (value,numbersystem)——使用的语法 然后传递值
Integer.toString(100,8) //打印144—八进制
Integer.toString(100,2) //打印1100100—二进制
Integer.toString(100,16) //打印64—十六进制
您可以使用位掩码(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();
}