Scala中>>和>>>之间的区别

Kok*_*zzu 13 scala operators bit-shift

Scala中的>>和>>>运算符有什么区别吗?

scala> 0x7f >>> 1
res10: Int = 63

scala> 0x7f >> 1 
res11: Int = 63

scala> 0x7f >> 4
res12: Int = 7

scala> 0x7f >>> 4
res13: Int = 7
Run Code Online (Sandbox Code Playgroud)

Jon*_*art 23

>>操作者保留符号(Sign-延伸),而>>>零的最左边的位(零扩展).

-10>>2
res0: Int = -3
-10>>>2
res1: Int = 1073741821
Run Code Online (Sandbox Code Playgroud)

自己尝试一下.

对于像C这样具有有符号和无符号类型的语言,这是不必要的,这与Java不同,Java也有>>>(因为它没有无符号整数).


4le*_*x1v 5

它们与Java中的含义相同。

\n

来自Java\xe2\x84\xa2 教程 - 按位和位移运算符

\n
\n

有符号左移运算符“<<”将位模式向左移动,有符号右移运算符“>>”将位模式向右移动。位模式由左侧操作数和右侧操作数要移位的位置数给出。无符号右移运算符“>>”将零移到最左边的位置,而“>>”之后的最左边的位置取决于符号扩展。

\n
\n
\n

>>>只存在于Java中,而不存在于C或C++中。

\n