我发现此代码将数字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
例如,如果x
的第一个pmax位是101
,并且数组p如下:
p={2 1 3}
那么这个函数的结果(y
)将等于011
问题
我从未使用过按位运算符,我希望看到上述代码的所有中间结果。例如y<<=1
做什么以及使用它的原因。要做到这一点,我需要在二进制形式中稍微显示y
变量,否则我只是得到一些随机小数,这对我没有任何帮助。
那么如何在每次按位操作后以二进制格式显示结果?
如果这不是一个很好的方法来准确了解这段代码的作用,你会建议采用什么方法?