位运算相关(一)——位运算学习笔记

位运算,是程序设计的一个重要领域,将数字转化为二进制之后再按位进行运算,效率高,是编程的一个重点知识。

一、&(与运算)

1.1 概念

与运算的运算符为&。当两个数进行与运算时,将其二进制进行操作,对于每一位,只有两个数这一位的值都是1,它的值才为1,否则为0。也就是说,1&1=1,1&0=0,0&1=0,0&0=0。

1.2 举例

以11&7为例。

11的二进制是1011,7的二进制是111(方便起见,我们将其写作0111),将它们每一位逐一比较,右起第一位为1,第二位也为1,由于1011第三位为0,0111第四位为0,所以运算结果的第三位和第四位为0。最后结果就是0011,即11&7=3。

二、|(或运算)

1.1 概念

或运算的运算符为|。当两个数进行或运算时,将其二进制进行操作,对于每一位,只要两个数中有一个这一位的值为1,它的值就为1,只有两个数这一位的值都是0,它的值才为0。也就是说,1|1=1,1|0=1,0|1=0,0|0=0。

1.2 举例

以11|7为例。

11的二进制是1011,7的二进制是0111,将它们每一位逐一比较,可得每一位两个数中都有至少一个值为1。最后结果就是1111,即11|7=15。

三、^(异或运算)

1.1 概念

异或运算的运算符为^。当两个数进行异或运算时,将其二进制进行操作,对于每一位,只有当两个数上这一位的数字不同,它的值才为1,若值相同,则为0。也就是说,1^1=0,1^0=1,0^1=1,0^0=0。

1.2 举例

以11^7为例。

11的二进制是1011,7的二进制是0111,将它们每一位逐一比较,右起第一位和第二位上两个数值都为1,所以结果上这两位为0,而第三位和第四位上两个数值一个为1一个为0,数字不同,所以结果上这两位为1。最后结果就是1100,即11^7=12。

四、~(取反运算)

1.1 概念

取反运算的运算符为~。取反运算是一个单目运算符,只对一个数进行运算。当对一个数进行取反运算时,将其二进制进行操作,对于每一位,若原来的值为1,则结果的值为0,若原来的值为0,则结果的值为1,相当于取与原值相反的数。也就是说,~1=0,~0=1。

1.2 举例

以~11为例。

11的二进制是1011,对每一位进行操作,由于右起第1,2,4位原值为1,所以结果上这三位值为0,由于右起第3位原值为0,所以结果上这位值为1。最后结果就是0100,即~11=4。

五、<<(左移运算)

1.1 概念

左移运算的运算符为<<。当两个数进行左移运算时,设运算符左边的数为x,右边的数为y,则结果是x在二进制下向左移动y位所得的值,相当于x乘上2的y次幂。

1.2 举例

以11<<2为例。

11的二进制是1011,将11在二进制下左移2位,可得101100。最后结果就是101100,即11<<2=44。

六、>>(右移运算)

1.1 概念

右移运算的运算符为>>。当两个数进行右移运算时,设运算符左边的数为x,右边的数为y,则结果是x在二进制下向右移动y位所得的值,相当于x整除2的y次幂。

1.2 举例

以11>>2为例。

11的二进制是1011,将11在二进制下右移2位,可得10。最后结果就是10,即11>>2=2。

七、位运算的优先级

1:~

2:<<,>>

3:&

4:^

5:|

 

 

注:如果您通过此文学会了位运算,请您点个赞再离开。当然,也欢迎在讨论区指出此文的不足处,作者会及时对此文加以修正
版权声明:转载请注明地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值