Java >>> >> << 运算

在一次看源码过程中,发现移位运算符,花点时间盘盘清楚,并记录下来

  public static void main(String[] args) {
    // 1000 0000 0000 0000 0000 0000 0001 0000 原
    // 1111 1111 1111 1111 1111 1111 1110 1111 反
    // 1111 1111 1111 1111 1111 1111 1111 0000 补
    int a =-16;

    // 补码向右移位,高位补0
    // 0111 1111 1111 1111 1111 1111 1111 1000 补
    // 0111 1111 1111 1111 1111 1111 1111 1000 反
    // 0111 1111 1111 1111 1111 1111 1111 1000 原
    // 2147483640
    System.out.println(a + " >>> 1 = " + (a>>>1));

    // 补码向左移动,低位补0
    // 1111 1111 1111 1111 1111 1111 1110 0000 补
    // 1111 1111 1111 1111 1111 1111 1101 1111 反
    // 1000 0000 0000 0000 0000 0000 0010 0000 原
    // -32
    System.out.println(a + " << 1 = " + (a<<1));

    // 补码向右移动,高位补1
    // 1111 1111 1111 1111 1111 1111 1111 1000 补
    // 1111 1111 1111 1111 1111 1111 1111 0111 反
    // 1000 0000 0000 0000 0000 0000 0000 1000 原
    // -8
    System.out.println(a + " >> 1 = " + (a>>1));

    // 0000 0000 0000 0000 0000 0000 0001 0000 原
    // 0000 0000 0000 0000 0000 0000 0001 0000 反
    // 0000 0000 0000 0000 0000 0000 0001 0000 补
    a = 16;

    // 补码向右移位,高位补0
    // 0000 0000 0000 0000 0000 0000 0000 1000 补
    // 0000 0000 0000 0000 0000 0000 0000 1000 反
    // 0000 0000 0000 0000 0000 0000 0000 1000 原
    // 8
    System.out.println(a + " >>> 1 = " + (a>>>1));

    // 补码向左移位,低位补0
    // 0000 0000 0000 0000 0000 0000 0010 0000 补
    // 0000 0000 0000 0000 0000 0000 0010 0000 反
    // 0000 0000 0000 0000 0000 0000 0010 0000 原
    // 32
    System.out.println(a + " << 1 = " + (a<<1));
  }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值