有没有理由认为Java中的有符号右移运算符(>>)和无符号右移运算符(>>>)会有不同的表现?我在我的机器上无法检测出任何区别。这纯粹是一个学术问题;我确定它永远不会成为瓶颈。我知道:最好首先写下你的意思;例如,使用>>进行除以2的操作。我认为这归结于哪些体系结构实现了哪些操作作为指令。
您的编译器将把这些内容转换为字节码,JVM将解释适用于您体系结构的字节码。我认为可以安全地假设您的体系结构具有包括在几个时钟周期内完成操作的操作指令集。无论如何,这些运算符的行为存在差异,因此不能互换使用。
>>>
,否则可能会发生整数溢出。 - Tom Hawtin - tackline