20

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

4

4 回答 4

21

Java添加了运算符“>>>”来执行逻辑右移,但是由于逻辑和算术左移操作是相同的,所以Java中没有“<<<”运算符。

来自Java中的转变...

于 2013-03-10T03:39:41.687 回答
8

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

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

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

于 2013-03-10T03:53:44.507 回答
5

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

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

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

于 2013-03-10T04:16:13.760 回答
-1

我认为这是一个设计错误。<< 不是算术移位。<< 如果你这样做,应该乘以 2

0xF0FFFFFF << 4

它返回一个正数!负数乘以 2 永远不会得到正数。<< 正在做 <<< 工作。

于 2013-04-21T07:10:45.467 回答