2012-08-29 100 views
0

可能重复:
Difference between >>> and >>的Java >>>操作

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

+1

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html – Hachi

+0

谷歌:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary .html – Augusto

回答

4

Java tutorial

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

+1

+1 Java需要这个操作符,因为'int'和'long'类型是有符号的。它不需要无符号的左移,因为它可以做同样的事情。 –

1

你可以看到一个简单的程序的区别:

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 
+0

从这个数字是2147483647从哪里来的? – eagertoLearn

+0

最大的正整数(除最左边的符号位以外的所有位)。 – assylias

0

签名的右移位操作符 “>>” 移位的位模式的火腿肠无符号右移运算符“>>>”将零移入最左边的位置,

更多信息

Follow this link