java >> >>>区别

>>考虑符号,>>>不考虑符号
正数在计算机以原码保存;负数以补码保存
public static void main(String[] args) {

    System.out.println(4>>1);

    //00000000 00000000 00000000 00000100  -> 4的原码
    //00000000 00000000 00000000 00000010  -> 移动
    //在正数情况下 >> >>>一样,
    
     System.out.println(-4>>2);
     
    //10000000 00000000 00000000 00000100 -> -4的原码 ,但是计算机不是这么保存
    //11111111 11111111 11111111 11111100 -> -4的补码 这才是计算机保存方式
    >>补码右移1 高位补符号位即1
    //11111111 11111111 11111111 11111110 
    由于此时符号位还是1是负数求原码
    //10000000 00000000 00000000 00000010 -> 取反+1  -2
    >>>无符号右移1 高位补0 ,此时符号位为0 正数补码与原码一样    //01111111 11111111 11111111 11111110 -> >>>移动 (2147483646) 
    //
}

总结,正数情况下 >> >>>没区别

           负数情况下>>补位1  >>>补位0 ,负数在计算机以补码表示,展示出来需要转换成原码代表此时的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值