public class TestRightMove {
public static void main(String[] args){
int a = 5;//00000101
int b = a >> 2;
System.out.println("b= "+b);//1
System.out.println( Integer.toBinaryString(a) ) ;
int c = 133;//10000101
int d = c >> 2;
System.out.println("d= "+d);//33
System.out.println( Integer.toBinaryString(c) ) ;
int e = -1;//11111111111111111111111111111111
int f = e >> 2;
System.out.println("f= "+f);//-1
System.out.println( Integer.toBinaryString(e) ) ;
int m = -4;//11111111111111111111111111111100
int n = m >> 2;
System.out.println("n= "+n);//-1
System.out.println( Integer.toBinaryString(m) ) ;
}
}
--------------------------------------------
运行上面的程序也许看的更清楚一些。
我们通常运行的系统是32位系统,java中运行>>符号计算时,其实是对int变量在内存中的存放形式二进制进行移位计算。
比如int a = 5;//00000101,其实在系统中是32位的,前面都是0,所有>>2后就是1,而int e = -1;//11111111111111111111111111111111,首位是1,所有无论怎么移动都是结果都是-1