Java位运算和移位操作

   public static void main(String[] args) {
        /* 移位操作*/
        //1、左移(<<) n左移m位  result= n*2^m
        System.out.println(2 << 3);//16
        System.out.println(-2 << 3);//-16
		/*-2 <<3
		原码:10000010 取反
		反码:11111101  +1
		补码:11111110 整体左移3位(负数左移补0),溢出的舍弃
	   移3位:11110000 -1
		反码:11101111 取反
		结果:10010000 = -16*/

        //2、右移(>>) n右移m位 result= n/2^m
		/*-2 >>1
		原码:10000010 取反
		反码:11111101  +1
		补码:11111110 右移1位 (负数右移补1)
		移位:11111111 -1
		反码:11111110 取反
		结果:10000001 =-1*/
        System.out.println(2 >> 1);//1
        System.out.println(2 >> 3);//0
        System.out.println(2 >> 13);//0
        System.out.println(-2 >> 1);//-1
        System.out.println(-2 >> 3);//-1
        System.out.println(-2 >> 13);//-1

		//3、无符号右移 (>>>)
			//无符号右移:正数与右移规则一样,负数的无符号右移,就是相应的补码移位所得,在高位补0即可
		System.out.println("无符号右移");
		System.out.println(2 >>> 1);//1
		System.out.println(2 >>> 3);//0
		System.out.println(2 >>> 13);//0
		System.out.println(-2 >>> 1);//2147483647
		System.out.println(-2 >>> 3);//536870911
		System.out.println(-2 >>> 13);//524287
    }

位运算和移位

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值