看起来像一个简单的方法,但我不明白如何|
在这里工作:解释方法(X << n) | (x > >>(32 - N))
/**
* Bitwise rotate a 32-bit number to the left.
*/
private static int rotateLeft(int x, int n) {
return (x << n) | (x >>> (32 - n));
}
第一部分(x << n)
,其中<<
是二进制左移运营商。左边的操作数x
的值左移了右边的操作数n
指定的位数。
(x >>>(32-n))部分,其中>>>
是右移零填充算子。左边的操作数x
的值右移了右边的操作数(32 - n)
指定的位数,移位后的值用零填充。
但是|
的用途是什么?
编辑: 好的,我发现它是简单的运算符:“二进制或运算符复制一个位,如果它存在于任一操作数”。所以顺序是:(x << n)
,然后(x >>> (32 - n))
,然后(left part result) | (right part result)
?
要结合这两部分? – immibis
这是按位或? –
[Java运营商](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html) – resueman