1

可能的重复:
在 Java 中将十进制转换为二进制

我发现这段代码将一个数字x、一个数组p和另一个pmax表示数组大小的数字作为输入p

public static int permute(int x, int p[], int pmax) {
    int y = 0;

    for (int i = 0; i < p.length; ++i) {
        y <<= 1;
        y |= (x >> (pmax - p[i])) & 1;
    }

    return y;
}

此代码应x 根据数组中定义的规则排列存储在数字中的第一个字节的位p

例如,如果 are 的前 pmax 位x101数组 p 如下: p={2 1 3} 那么这个函数(y)的结果将等于011

问题

我从未使用过按位运算符,我想查看上述代码的所有中间结果。例如做y<<=1什么以及为什么使用它。为此,我需要在某种程度上y以二进制形式显示变量,否则我只会得到一些随机小数,这无助于我理解任何事情。

那么如何在每次按位运算后以二进制格式显示结果呢?

如果这不是准确了解此代码功能的好方法,您会建议什么方法?

4

2 回答 2

5

Integer.toBinaryString(int x)会为你做这件事。

于 2013-01-04T16:52:41.613 回答
3

你在找Integer.toBinaryString(int i)吗?

于 2013-01-04T16:53:06.753 回答