相关疑难解决方法(0)

如何在java中获得整数的0填充二进制表示?

例如,1, 2, 128, 256输出可以是(16位):

0000000000000001
0000000000000010
0000000010000000
0000000100000000
Run Code Online (Sandbox Code Playgroud)

我试过了

String.format("%16s", Integer.toBinaryString(1));
Run Code Online (Sandbox Code Playgroud)

它为左边填充放置空格:

`               1'
Run Code Online (Sandbox Code Playgroud)

如何将0s用于填充.我在Formatter中找不到它.还有另一种方法吗?

提前致谢.

PS 这篇文章描述了如何使用左0填充格式化整数,但它不适用于二进制表示.

java binary string-formatting

113
推荐指数
7
解决办法
12万
查看次数

BigInteger的"&"逻辑运算符相当于

我有这个代码:

if ((x & y)==0){ 
// do this... 
}
Run Code Online (Sandbox Code Playgroud)

我想实现相同的效果,但使用BigInteger而不是int.

我试过这个:

if ((x.compareTo(BigInteger.ZERO)==0)&&(y.compareTo(BigInteger.ZERO)==0)){ 
// do this...
}
Run Code Online (Sandbox Code Playgroud)

但是,现在,我的程序永远不会进入这个if语句.我将衷心感谢您的帮助.

此外,这是整个代码.

import java.math.*;

public class mew {

public static void main (String[] args) {

BigInteger two = BigInteger.valueOf(2);
BigInteger num = two.pow(100);
BigInteger i = BigInteger.valueOf(0);

while (i.compareTo(num) < 0){
    BigInteger mask = num;

    while (mask.compareTo(BigInteger.ZERO) > 0){
            if ((mask.compareTo(BigInteger.ZERO)==0)&&(i.compareTo(BigInteger.ZERO)==0)){
             System.out.print("0");
             }
            else {
             System.out.print("1");
                }
             mask = mask.shiftRight(1);
                }
     System.out.println();
     i = i.add(BigInteger.valueOf(1));
          }

    }
}
Run Code Online (Sandbox Code Playgroud)

目的是打印n长位串的所有可能排列.我应该参考我的想法和实现:Java:如何输出所有可能的二进制组合(256个不同的序列)?看到nikis的帖子.

java if-statement biginteger

-3
推荐指数
1
解决办法
766
查看次数