$、|、^、>>、>>>位运算详解

位运算
首先要了解二进制,位运算会将十进制的数值转位二进制的数值,然后进行运算。

按位与(&)

3 & 5= 0011 & 0101 = 0001;

3: 0 0 1 1;
    & & & &
5: 0 1 0 1;
----------------
1: 0 0 1 0

第一位 0 & 0 得 0
第二位 0 & 1 得 0
第三位 1 & 0 得 0
第四位 1 & 1 得 1

组合起来就是0001;

到这里我想细心的同学已经发现了其中的规则,就是将二进制的每一位进行比较,如果两个数字都等于1的情况下,那么对应的位置就为1,否则等于0

按位或(|)

两个二进制位数进行按位或运算,只要其中一位为1,则运算结果就为1

3 | 5 = 0011 | 0101 = 0111 =7

3: 0 0 1 1;
    & & & &
5: 0 1 0 1;
----------------
7: 0 1 1 1

异或运算符(^)

异或运算过程中,两个位置如果同为1的情况下等于0;其中一位等于1的情况下等于1

3 ^ 5 = 0011 ^ 0101 = 0110 = 6

3: 0 0 1 1;
    & & & &
5: 0 1 0 1;
----------------
6: 0 1 1 0

左移运算符(<<)

1 = 00000000 00000000 00000000 00000001

1 << 5 就是将1往左边移动5-----------------------------------
结果为:
32 = 00000000 00000000 00000000 00100000

右移运算符(>>)

示例一

8: 00000000 00000000 00000000 00010000
8 >> 2 
-----------------------------------
结果为:
2 = 00000000 00000000 00000000 00000010

示例二

1 >> 5 = 00000000 00000000 00000000 00000000 00001
-----------------------------------
结果为:
0 = 00000000 00000000 00000000 00000000

右移无符号(>>>)

与右移运算符号的区别,主要是在负数运算的时候有所不同

十进制数字-1时在1的二进制取反,然后在+11 = 00000000 00000000 00000000 00000001
取反 = 11111111 11111111 11111111 11111110 
+ 1 = 11111111 11111111 11111111 11111111

-1 >>> 5 
---------------------------------------
134217727 = 00000111 11111111 11111111 11111111
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java学习者柯十一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值