为什么Java不支持无符号左移(<<<
)运算符,但支持无符号右移(>>>
)运算符?
为什么Java不支持无符号左移(<<<
)运算符,但支持无符号右移(>>>
)运算符?
Java添加了运算符">>>"来执行逻辑右移,但是由于逻辑和算术左移操作是相同的,因此在Java中没有"<<<"运算符。
>>>
存在的原因是 Java 中缺少无符号数据类型。在 C/C++/C# 中,当左操作数为无符号时,使用逻辑右移,因此你甚至看不到 >>>
。 - Alvin Wong我认为这是一个设计错误。<< 不是算术移位。 << 应该是乘以2的意思, 如果你执行
0xF0FFFFFF << 4
它会返回一个正数! 负数乘以2永远不应该得到一个正数。 <<正在执行 <<< 的工作。
F0FFFFFF * 2^4
表示为负的64位有符号值?(实际上 << 所做的是乘以2的幂...然后是标准Java int
溢出行为;即高位截断。这不是一个错误。) - Stephen C