位运算符详细解释

符号功能记忆技巧
&按位与有0则0
|按位或有1则1
^按位异或相同为0,不同为1
~单目取反0变1,1变0
<<左移移位右边补0
>>右移右移左边补0

*位运算只针对整型和字符型,而且是直接对二进制进行操作

按位与&

这个符号其实和逻辑与运算&&意思一样,只不过作用在每一位上。

有0则0:

对于每一位来说,两个数都是真。则为真,否则位假。

3-> 0b 0000 0011
2-> 0b 0000 0010
3&2 ->0b 0000 0010

按位与|

同理,和逻辑或运算||意思一样,只不过作用在每一位上。

有1则一:

对于每一位来说,但凡有个真的就是真,否则为假。

3   -> 0b 0000 0011
2   -> 0b 0000 0010
3|2 ->0b 0000 0011

按位异或^

相同为0,不同为1:

对于每一位来说,只要相同就为0,不同就为1。

3   -> 0b 0000 0011
2   -> 0b 0000 0010
3^2 ->0b 0000 0001

按位取反~

取反就是一个单目运算符,对每一位进行取反,即0变1,1变0

6   -> 0b 0000 0110
~6  -> 0b 1111 1001    //补码:最高位变成了符号位,所以结果肯定是一个负数
       0b 1000 0110   //反码
       0b 1000 0111   //原码
result: -7

左移

左移操作就是把这些0啊1啊的整体往左移动n位,右边缺的就补0。(这个单片机里面常用)

3       -> 0b 0000 0011
3<<1    -> 0b 0000 0110 ==6
    
2       -> 0b 0000 0010
2<<2    ->0b 0000 1000 == 8

大家可以发现,左移1位之后这个数相当于乘2。但是这只适用于左边溢出的高位中不包含1时。如果把1扔了,那就肯定不是2倍了。

右移

右移操作就是整体往右移动n位,左边缺的补充符号位(0)。

3       -> 0b 0000 0011
3>>1    -> 0b 0000 0001 ==1
    
2       -> 0b 0000 0010
2>>2    -> 0b 0000 0000 == 0

跟上面说的一样,正数右移的时候就是这个数除以2。

                                                                                                                            -----------20223/6/23

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值