java之移位操作

java中共有3种移位操作符,分别为"<<"(左移位操作符)、">>"(右移位操作符)和">>>"(无差别右移位操作符)。

对于java语言中的移位操作需要注意以下3点:

1.移位操作的对象为整形(int)或者长整形(long),对于char、byte和short类型自动执行向上转型为int。

2.符号位参与到移位过程,对于"<<"和">>",移位是带符号的,在高位补与原符号位相同的数字,即正数高位补0,负

   数低位补1;对于">>>",移位操作是无差别的,在高位补0。

3.第三个问题是关于移位操作的宽度问题。移位宽度为截取移位操作的右操作数低五位得到的正整数,因此取值范围为0

   ~31(对于长整形为低6位,因此取值范围为0~63)。

下面是一个小例子:

public class Cycle {

/**
*
@param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
shift();
}

public static void shift(){
int i = -1;
System.out.println(i + ":");
System.out.println(Integer.toBinaryString(i));
i = i >>> 31;
System.out.println(i + ":");
System.out.println(Integer.toBinaryString(i));

int j = -1;
j = j >> 1;
System.out.println(j + ":");
System.out.println(Integer.toBinaryString(j));
}
}



posted on 2011-10-12 15:35  liuriu  阅读(2756)  评论(0)    收藏  举报