【发布时间】:2011-01-02 00:41:32
【问题描述】:
运算符>>和>>>有什么区别?
【问题讨论】:
-
那是八……嘿,来吧。 SO 是一个学习的好地方,但如果你从这里开始,你会学到更多、更快、更好:java.sun.com/docs/books/tutorial/java/index.html
-
坦率地说,你为什么不用谷歌搜索呢? SO 不是谷歌的替代品。
标签: java
运算符>>和>>>有什么区别?
【问题讨论】:
标签: java
>>> 右移并在左端用 0 填充,而>> 用符号位填充。
这对于有符号整数类型(即除byte 之外的所有类型)有所不同,其中负值具有设置的符号位。
【讨论】:
>>有符号右移运算符和>>>无符号右移运算符
右移
>>运算符移位 左边的操作数到右边 带有符号扩展的数量 由其右操作数指定的位。 这意味着在 n 个位置的值 向右移动导致 n个高阶位,包含 与未移位值相同的值。 该运算符从不抛出 例外。
无符号右移
>>>运算符 将零移到最左边 位置但是最左边的位置 “>>”之后取决于符号扩展。
【讨论】:
有符号右移运算符“>>” 向右移动一个位模式。这 位模式由左手给出 操作数和位置数 移动右手操作数。 无符号右移运算符 >>>" 将零移到最左边 位置,而最左边的位置 “>>”之后取决于符号扩展。
来自http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html
【讨论】:
这里有一个例子的解释:
http://www.roseindia.net/java/master-java/bitwise-bitshift-operators.shtml
>> 将符号填充到左侧的符号位(即,为负值填充 1,为正值填充 0),而 >>> 不填充(始终为 0)。这在移动负值时很方便。没有<<<,因为符号位在左侧,因此<< 的行为已经像<<< 那样(填充零,没有别的)。
【讨论】: