Java基础——一文带你不再困惑“<<“,“>>“,“>>>“,“&“,“|“,“^“位运算

在介绍这些运算符运算方式之前需要注意:位运算都是整数之间的运算

<<(左移)

举个栗子:18 << 3 = 144,那么计算机是如何计算它的呢?

看图解析↓

PS:当二进制数最高位是0时,左移后空出位用0补齐。 

 

同理:18 << 4 = 288 ; 18 << 5 = 576 ; 18 << 6 = 1152

可以看出规律:18 << 6 = 1152 = (18 << 5) * 2  = (18 << 4) * 2 * 2 = (18 << 3) * 2 * 2 * 2 

因此得出:整数 x 做左移 n 时(x << n),等于 x 乘以 2的n次方(x * 2^n)

但是:当18<<27呢?18 << 27 = -1879048192,恰好将1的位置移动到了32位01代码的第一位,因此变成了负数。

总结:在一定范围内,一个整数每左移一位就乘以2。

>>(右移)

举个栗子:18 >> 3 = 2,那么计算机是如何计算它的呢?

看图解析↓

 PS:当二进制数最高位是0时,左移后空出位用0补齐,当最高位是1时,空出位用1补齐(用来区分正负数)。 

 

同理:18 >> 2 = 4 ; 18 >> 1 = 9  

因此得出:整数 x 做右移 n 时(x >>n),等于 x 除以 2的n次方(x / 2^n)。

总结:在一定范围内,一个整数每右移一位就除以2。

>>>(无符号右移)

可根据上述移位方式来计算,不同的是

PS:被移位二进制最高位无论是0或者1,空缺位都用0补。

&(与运算)、| (或运算)、^(异或运算)

&计算方式:二进制进行&运算,只有1&1时结果是1,否则是0。

| 计算方式:二进制位进行|运算,只有0&0时结果是0,否则是1。

^计算方式:二进制位相同进行^运算,结果是0(1^1=0, 0^0=0);

                    二进制位不同进行^运算,结果是1(1^0=0,1^0=0)。

举个栗子:12&5、12|5、12^5,看↓图

~(取反运算)

例如 ~ 6 = -7,计算解析↓

PS:整数取反,各二进制码按补码各位取反

        负数取反,各二进制码按补码各位取反

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值