java中的“>>>”是什么意思?
我试图将此代码转换为python,但我很难这样做,不要担心索引值和变量名称,我只是想知道“>>>”部分究竟做什么,也许是python等价物,但解释会很棒:
target[0] = (char)(source[sourceIndex] >>> 2); target[1] = (char)((source[sourceIndex] & 3) <>> 4); target[2] = (char)((source[sourceIndex + 1] & 0xf) <>> 6); target[3] = (char)(source[sourceIndex + 2] & 0x3f);
任何帮助,将不胜感激
“<<<”和“>>”是位移操作符。 特别,
带符号的左移运算符“<<”将位模式向左移位,带符号的右移运算符“>>”将位模式向右移位。 位模式由左侧操作数给出,以及由右侧操作数移位的位置数。 无符号右移运算符“>>>”将零移动到最左侧位置,而“>>”之后的最左侧位置取决于符号扩展。
– 来自The Java™Tutorials – 按位和位移算子
这是一个“无条件的右移”。
所以,如果你的数字( x
)是11110000
(二进制)。
x >>> 1
将为01111000
(二进制)。
这与x >> 1
相反,这将导致11111000
(二进制)。
>>
尝试保留“符号位”,但>>>
不会。
注意:我假设一个8位整数(或Java中的一个byte
)。 同样的事情适用于2字节和4字节整数。
那是无符号右移运算符。 它是一个按位运算符,将零移动到操作数的最左边位。 这里 – http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html 。