Java“位”操作符

1、“&”,按位与运算

2、“|”,按位或运算

3、“^”,按位异或运算

4、“~”,按位非运算

5、“<<”,左移位操作符,按照操作符右侧指定的位数将操作符左边的操作数向左移动(低位补0);

6、“>>”,(有符号)右移位操作符,按照操作符右侧指定的位数将操作符左边的操作数向右移动。若为正数,高位插入0;若为负数,则插入1;

7、“>>>”,无符号右移位操作符,无论正负都在高位插入0。

 

注:对于负数的位运算是按照其补码进行运算。负数的补码为其反码加1,负数的反码为其原码按位取反(符号位除外)。

 

有符号右移与无符号右移的举例说明:

例:对于负整数 “-8”,如果我们对其进行有符号右移1位操作“-8 >> 1”,得到的结果为 -4 。而我们对其进行无符号右移1位操作 “-8>>>1”,得到的结果为2147483644。究其原因,计算机中数值的存储是按补码存储,int型 -8 的原码为“10000000 00000000 00000000 00001000”,补码为“11111111 11111111 11111111 11111000”。我们对其进行右移1位后,因为其为负数,所以高位补1,补码变为补码为“11111111 11111111 11111111 11111100”,则对应的原码为“10000000 00000000 00000000 00000100”,即 -4。

而,我们对 “-8” 进行无符号右移操作,其高位补0,则其补码变为“01111111 11111111 11111111 11111100”,此时它变为了正数,即其补码与原码相同,对应的二进制数为“2147483644”。

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值