学习任务:

视频学习Java位运算左移和右移

动手测试Java位运算左移和右移

1、左移

语法如下:

操作数<<位数

将符号左边的操作数左移指定的位数。

首先将左边的操作数转为二进制。

然后按照要求左移指定位数,左边最高位丢弃,右边补齐0。

比如:

3<<2
3的二进制:
00000000 00000000 00000000 00000011
左移2位,左边最高位丢弃,右边补齐0:
00000000 00000000 00000000 00001100

2、右移

语法如下:

操作数>>位数

将符号左边的操作数右移指定的位数。

首先将左边的操作数转为二进制。

然后按照要求右移指定位数,最高位是0,左边补齐0;最高为是1,左边补齐1。

比如:

24>>2
24的二进制:
00000000 00000000 00000000 00011000
右移2位,最高位是0,左边补齐0;最高为是1,左边补齐1:
00000000 00000000 00000000 00000110

3、无符号数右移

语法如下:

操作数>>>拉数

将符号左边的操作数右移指定的位数。

首先将左边的操作数转为二进制。

然后按照要求右移指定位数,无论最高位是0还是1左边补齐0。

运行下边的程序:

/**
 * 	位运算测试
 * @author 攀博课堂(www.pbteach.com)
 *
 */
public class OperatorDemo10 {
	public static void main(String[] args) throws InterruptedException {
		
		//<< 左移1位即左边数乘以2的1次方,左移2位即左边数乘以2的2次方,以此类推
		System.out.println(3 << 2); 
	
		//>> 右移1位即左边数除以2的1次方,右移2位即左边数除以2的2次方,以此类推
		System.out.println(24 >> 2); 
		//负数转成二进制要用补码,最终将补码右移,再转成原码
		System.out.println(-24 >> 2); 
		//无符号数右移无论最高位是0还是1左边都补齐0
		System.out.println(24 >>> 2);
		System.out.println(-24 >>> 2);
	}
}

结果:

12
6
-6
6
1073741818

分析如下:

image-20200801093114317

image-20200801093144147

image-20200801093159032

提问-攀博课堂
我要提问 不会就问,有效沟通
关注公众号,加入微信群交流提问。 攀博课堂官方公众号
问答列表,查看本知识点所有问题