【问题标题】:What is the difference between the Java operators >> and >>>? [duplicate]Java 运算符 >> 和 >>> 有什么区别? [复制]
【发布时间】:2011-01-02 00:41:32
【问题描述】:

运算符>>和>>>有什么区别?

【问题讨论】:

标签: java


【解决方案1】:

>>> 右移并在左端用 0 填充,而>> 用符号位填充。

这对于有符号整数类型(即除byte 之外的所有类型)有所不同,其中负值具有设置的符号位。

【讨论】:

    【解决方案2】:

    >>有符号右移运算符和>>>无符号右移运算符

    Signed Right Shift Operator

    右移>> 运算符移位 左边的操作数到右边 带有符号扩展的数量 由其右操作数指定的位。 这意味着在 n 个位置的值 向右移动导致 n个高阶位,包含 与未移位值相同的值。 该运算符从不抛出 例外。

    Unsigned Right Shift Operator

    无符号右移>>> 运算符 将零移到最左边 位置但是最左边的位置 “>>”之后取决于符号扩展。

    【讨论】:

      【解决方案3】:

      有符号右移运算符“>>” 向右移动一个位模式。这 位模式由左手给出 操作数和位置数 移动右手操作数。 无符号右移运算符 >>>" 将零移到最左边 位置,而最左边的位置 “>>”之后取决于符号扩展。

      来自http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html

      【讨论】:

        【解决方案4】:

        这里有一个例子的解释:

        http://www.roseindia.net/java/master-java/bitwise-bitshift-operators.shtml

        >> 将符号填充到左侧的符号位(即,为负值填充 1,为正值填充 0),而 >>> 不填充(始终为 0)。这在移动负值时很方便。没有<<<,因为符号位在左侧,因此<< 的行为已经像<<< 那样(填充零,没有别的)。

        【讨论】:

          猜你喜欢
          • 2016-04-28
          • 2022-12-14
          • 2012-12-19
          • 2016-06-22
          • 2021-12-23
          • 1970-01-01
          • 2011-10-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多