Java位运算符
1、左移 <<
口诀:高位丢弃,低位补零
计算机采用二进制存储机制,一个字节是八位,所以Byte的取值范围为-128~127
0用二进制表示为0000 0000 其中国最高位是符号位,0代表为正数,1代表为负数:具体代码如下
public static void main(String[] args) {
int a=16;
System.out.println("16的二进制"+Integer.toBinaryString(a));
a<<=2;
System.out.println("16左移两位后的二进制"+Integer.toBinaryString(a));
System.out.println("16左移两位后转为十进制"+a);
}
运行结果
16的二进制10000
16左移两位后的二进制1000000
16左移两位后转为十进制64
2、右移>>
口诀:低位丢弃,高位按照符号位补充
public static void main(String[] args) {
int a=16;
System.out.println("16的二进制"+Integer.toBinaryString(a));
a>>=2;
System.out.println("16右移两位后的二进制"+Integer.toBinaryString(a));
System.out.println("16右移两位后转为十进制"+a);
}
运行结果
16的二进制10000
16右移两位后的二进制100
16右移两位后转为十进制4
总结:对于大于零的数而言,左移一位,左移后的数是原来的两倍,两位、扩大四倍以此类推,右移以为,右移后的数比原来缩小两倍,两位、比原来缩小四位,以此类推。直到为0