为什么Java不支持<<<操作者

时间:2013-03-10 03:35:31

标签: java oop

为什么Java不支持<<<(无符号左移)运算符,但支持>>>(无符号右移)运算符?

4 个答案:

答案 0 :(得分:20)

  

Java添加运算符“&gt;&gt;&gt;”执行逻辑右移,但是   因为逻辑和算术左移操作是   相同,没有“&lt;&lt;&lt;&lt;&lt; Java中的运算符。

来自Shifts in Java...

答案 1 :(得分:7)

  

为什么Java不支持<<<(无符号左移)运算符,但支持>>>(无符号右移)运算符?

因为(假设的)无符号左移运算符与现有的左移运算符完全相同。

(提示:将二进制整数乘以2需要左移1并使最右边的位为零,无论整数表示是有符号还是无符号。在一张纸上写一些例子并自己测试。)

答案 2 :(得分:4)

  

为什么Java不支持&lt;&lt;&lt; (无符号左移)运算符,但是   确实支持&gt;&gt;&gt; (无符号右移)算子?

那是因为当您离开位时,最左边的位(AKA SIGNED位)无论如何都会丢失。

由于无符号左移运算符与现有的左移运算符完全相同,我们没有。

答案 3 :(得分:0)

我认为这是一个设计错误。 &lt;&lt;&lt;不是算术转移。 &LT;&LT;假设乘以2 如果你这样做

  

0xF0FFFFFF&lt;&lt; 4

它返回正数! 负数乘以2应该永远不会得到正数。 &lt;&lt;正在做&lt;&lt;&lt;工作