日期:2014-05-20  浏览次数:20857 次

java << >> >>> 的用法 以及能给一个解释不,没看懂啊!
代码贴上 
Java code

package day21;

public class chartoint {
    int i = 7 ;
    int j = -7;
    public static void main(String []args){
        System.out.println(a.i>>3);
        System.out.println(a.j>>>28);
        System.out.println(a.j>>2);
        System.out.println(a.j<<2);
    }
}



结果是 0 15 -2 -28 为什么啊 !!!

------解决方案--------------------
7 二进制表示为:
 0000 0000 0000 0000 0000 0000 0000 0111
>>带符号右移。移3位为:(高位0表示正数)
 0000 0000 0000 0000 0000 0000 0000 0000
10进制为0。

-7 二进制表示:
 1111 1111 1111 1111 1111 1111 1111 1001
>>> 是无符号右移(空出高位补零)移28位后是:
 0000 0000 0000 0000 0000 0000 0000 1111
10进制表示15。

-7>>2 是:
 1111 1111 1111 1111 1111 1111 1111 1110
10进制为 -2。
-7<<2 是(右边补零)
 1111 1111 1111 1111 1111 1111 1110 0100
10进制是-28。