【问题标题】:Java >>> Operator [duplicate]Java >>> 运算符 [重复]
【发布时间】:2012-08-23 23:10:36
【问题描述】:

可能重复:
Difference between >>> and >>

谁能解释一下>>> 运算符在Java 中的作用。 我在这个问题中遇到了它,Hash method in HashMap。从它在问题中的用法来看,它似乎是一个移位运算符 - >>> 和 >> 之间有什么区别?

【问题讨论】:

标签: java


【解决方案1】:

来自Java tutorial:

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

【讨论】:

  • +1 Java 需要此运算符,因为 int 和 long 类型已签名。它不需要无符号左移,因为那会做同样的事情。
【解决方案2】:

你可以通过一个简单的程序看出区别:

public static void main(String[] args) throws InterruptedException, IOException {
    int i = -1;
    int j = i >> 1;
    int k = i >>> 1;
    System.out.println("i = " + i + "\t\t<=> " + Integer.toBinaryString(i));
    System.out.println("j = " + j + "\t\t<=> " + Integer.toBinaryString(j));
    System.out.println("k = " + k + "\t<=> " + Integer.toBinaryString(k));
}

输出:

i = -1          <=> 11111111111111111111111111111111  
j = -1          <=> 11111111111111111111111111111111  
k = 2147483647  <=> 1111111111111111111111111111111

【讨论】:

  • 这个数字 2147483647 是从哪里来的?
  • 最大的正整数(所有位为 1,除了最左边的符号位)。
【解决方案3】:

有符号右移运算符“>>”将位模式向右移动。无符号右移运算符“>>>”将零移到最左边的位置,

更多信息

Follow this link

【讨论】:

    猜你喜欢
    • 2011-11-06
    • 2013-09-07
    • 2014-05-10
    • 1970-01-01
    • 2023-03-29
    • 2011-04-15
    • 2012-05-26
    • 2010-10-02
    • 2014-09-29
    相关资源
    最近更新 更多