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));
}
}
浙公网安备 33010602011771号