可能的重复:
在 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 位x
和101
数组 p 如下:
p={2 1 3}
那么这个函数(y
)的结果将等于011
问题
我从未使用过按位运算符,我想查看上述代码的所有中间结果。例如做y<<=1
什么以及为什么使用它。为此,我需要在某种程度上y
以二进制形式显示变量,否则我只会得到一些随机小数,这无助于我理解任何事情。
那么如何在每次按位运算后以二进制格式显示结果呢?
如果这不是准确了解此代码功能的好方法,您会建议什么方法?