注意:位运算只作用在int类型上面,其他类型得先转化成int
我们用这段代码做测试:
public class Test {
public static void main(String[] args) {
int number = 10;
System.out.println("输入的原始数字"+number);
//原始数二进制
printInfo(number);
number = number >> 1;
//>>右移动x位 <<左移动x位
System.out.println("移位后的数字为"+Integer.parseInt(""+number,10));
printInfo(number);
}
/**
* 输出一个int的二进制数
* @param num
*/
private static void printInfo(int num){
System.out.println("该数字的二进制数为:"+Integer.toBinaryString(num));
}
}
1.>> 向右移位后面有多少个数字就移动几位,最低位就被消去几位
超过本身的位数的话就会变成0
2.<< 向左移位后面有多少个数字就移动几位,后面就补几个‘0’
3.>>> 是无符号右移
-
当原始数字是正数的时候 效果跟>>一样
-
当原始数字是负数的时候,显示的是一个32位的二进制数,效果跟>>是一样的,不过当超过移动32位后,他会重新变回原来的负数,也就是说他是以32位数一个周期循环的。
当移动32位后
当移动33位后