位运算的基础用法总结

位运算概览

1.&:与操作 两个位都为1时,结果才为1

2.|:或操作 两个位都为0时,结果才为0

3.^:异或操作 两个位相同为0,相异为1

4.~:取反 0->1 1->0

5.<< :左移 各二进位全部左移若干位,高位丢弃,低位补0

6.>> :右移 各二进位全部右移若干位,对无符号数,高位补0

位运算操作

1. 按位与运算符(&)
规则:与操作 两个位都为1时,结果才为1

0&0=0 0&1=0 1&0=0 1&1=1

example: 3 & 5 = 1

​ 0000 0011 &

​ 0000 0101 =

​ 0000 0001 = 1

!!!: 负数按补码形式参加按位与运算

用途
  1. 清零

​ 如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。

​ 0101 0010 & 0000 0000 = 0000 0000

  1. 取一个数的指定位

​ 比如取数 X=1010 1110 的低4位,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位与运算(X&Y=0000 1110)即可得到X的指定位。

​ 总结:要取那几位,就与上哪几位全是1的二进制数

  1. 判断奇偶

​ 只要根据最未位是0还是1来决定,为0就是偶数,为1就是奇数

​ 因为偶数的二进制数最后一位一定为0

​ 用 if((a & 1) == 0) 代替 if(a % 2 == 0) 判断a是否为偶数

2.按位或运算符(|)
规则:或操作 两个位都为0时,结果才为0

0|0=0 0|1=1 1|0=1 1|1=1

总结:参加运算的两个对象只要有一个为1,其值为1

example: 3 | 5 = 7

​ 0000 0011 |

​ 0000 0101 =

​ 0000 0111 = 7

!!!: 负数按补码形式参加按位或运算

用途
  1. 对一个数据的某些位置设为1

    比如将数 X=1010 1110 的低4位设置为1,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位或运算(X|Y=1010 1111)即可得到

​ 总结:要设置哪几位为1,就或上哪几位全是1的二进制数

3.异或运算符(^)
规则: 异或操作 两个位相同为0,相异为1
异或的几条性质:

​ 1、交换律

​ 2、结合律 (a^ b)^ == a^ (b^c)

​ 3、对于任何数x,都有 x^ x=0,x^0=x

​ 4、自反性: a^ b^ b =a^0=a;

用途:
  1. 翻转指定位

​ 比如将数 X=1010 1110 的低4位进行翻转,只需要另找一个数Y,令Y的低4位为1,其余位为0, 即Y=0000 1111,然后将X与Y进行异或运算(X^Y=1010 0001)即可得到。

​ 总结:想要翻转哪几位数,就按位异或上哪几位数字

  1. 与0相异或值不变

    1010 1110 ^ 0000 0000 = 1010 1110

4.取反运算符(~)
规则: 取反 0->1 1->0

​ 总结:对一个二进制数按位取反,即将0变1,1变0

用途:
  1. 使一个数的最低位为零

​ 使a的最低位为0,可以表示为:a &~ 1。 ~1的值为 1111 1111 1111 1110,再按"与"运算,最 低位一定为0。因为“ ~”运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他运算符都高

5.左移运算符(<<)
规则:左移 各二进位全部左移若干位,高位丢弃,低位补0

​ 设 a=1010 1110,a = a<< 2 将a的二进制位左移2位、右补0,即得a=1011 1000

​ 每移一位,相当于这个数 x2

6.右移运算符(>>)
规则:右移 各二进位全部右移若干位,对无符号数,高位补0

​ a=a>>2 将a的二进制位右移2位,左补0 或者 左补1得看被移数是正还是负

​ a=1010 1110,a = a<<2 , 所以a=1011 1000

​ 操作数每右移一位,相当于该数除以2

整理资料来源感谢:https://blog.youkuaiyun.com/scarificed/article/details/112972923

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Chuckle_7

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

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

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

打赏作者

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

抵扣说明:

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

余额充值