这都是位操作,其中:
  ~ : 意思是按位取反,类似于非(!)的关系,取它的反面。
  <<: 意思是左移,移动二进制的位。
  & : 意思是按位与,类似于与(&&)的关系,一假为假。
  ^ : 意思是按位异或,通俗地说就是相同为0,不同为1.
  | : 意思是按位或,类似于或(||)的关系,一真为真。
  优先级:按位取反 > 移位 > 按位与 > 按位异或 > 按位或

第一个式子:x | (1<<4) | (1<<3) | (1<<2),写出它们的二级制码:

1 :0 0 0 0 0 0 0 1
  1<<2:0 0 0 0 0 1 0 0 ★★
  1<<3:0 0 0 0 1 0 0 0 ★★
  1<<4:0 0 0 1 0 0 0 0 ★★
  (1<<4) | (1<<3) | (1<<2):0 0 0 1 1 1 0 0 ★★★
  显然,拿(1<<2),(1<<3),(1<<4)与x求位或的结果就是将x二进制位中第3、4、5位(从低位向高位计数)中的数变为1。此操作多用来恢复位。

第二个式子:x & ~(1<<2) & ~(1<<0),写出它们的二级制码:
  1 :0 0 0 0 0 0 0 1
  1<<0 :0 0 0 0 0 0 0 1
  ~(1<<0):1 1 1 1 1 1 1 0 ★★
  1<<2 :0 0 0 0 0 1 0 0
  ~(1<<2):1 1 1 1 1 0 1 1 ★★
  ~(1<<2) & ~(1<<0):1 1 1 1 1 0 1 0 ★★★
  显然,这两个式子与x进行求位与的结果就是将x第1、3位处的二进制码变为0,此操作多用来清除位。

第二个式子:x ^ (1<<3) ^ (1<<2),写出它们的二级制码:

1 :0 0 0 0 0 0 0 1
  1<<2:0 0 0 0 0 1 0 0 ★★
  1<<3:0 0 0 0 1 0 0 0 ★★
  (1<<3) ^ (1<<2):0 0 0 0 1 1 0 0 ★★★
  显然,这两个式子与x进行求异或的结果就是将x第3、4位处的二进制码取反(0与1生成1,1与1生成0),其他位置不变。此操作多用来反转位和保留位。

《C++》左移按位与按位异或按位或优先级相关推荐

  1. 按位与  逻辑与  按位或|  逻辑或||  及其应用

    按位与&  逻辑与&&  按位或|  逻辑或||  及其应用 结果:1&2 = 0 1&&2 = 1 结果: 概念: 掩码(英语:Mask)在计算机学科 ...

  2. 位运算符:按位取反(~)、位与()、位或(|)、位异或(^);左移运算符(<<)、右移运算符(>>)

    位运算可对变量中的个别位进行操作,您可能对这样做的原因感到奇怪,这种能力有时确实是必须的,或者至少是有用的. 位运算符可以分为两大类:1.位逻辑运算符:2.移位运算符 1.位逻辑运算符: 位运算符用于 ...

  3. 位操作符详解(移位操作符(左移/右移)、按位与‘’操作符、按位或‘|’操作符、按位异或‘^’操作符)

    位操作是程序设计中对位模式按位或二进制数的一元和二元操作: 在许多微处理器上,位运算与加减运算速度大致相同,但位运算的速度远快于乘法运算: 位操作符的使用,可以使我们在处理一些问题上方便许多. 移位操 ...

  4. 按位或 按位与 按位异或 (| ^) 入门及技巧

    | 按位或:     参与运算的两数各对应的二进位相或.只要对应的二个二进位有一个为1时,结果位就为1         例如: 1|2 : 0001 | 0010 = 0011             ...

  5. Python基础:按位异或 ^ ,按位或 | ,按位与

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...

  6. mysql 按位取反_按位与,按位异或,按位取反

    **& 按位与,相同的不变,否则都算成0 | 按位或, ^ 按位异或,不相同的都算成1** PHP按位与或 (^ .&)运算也是很常用的逻辑判断类型,有许多的PHP新手们或许对此并不太 ...

  7. Python全栈工程师(Python3 所有基础内容 0-0)

    ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰  开局一张图 Python一个月的基础语法 基本就到这咯    接下来是数据库了 东西太多了  简单的整理一下 大 ...

  8. 西邮Linux兴趣小组2021纳新面试题

    #include<stdio.h> #include<string.h> int main(void) {char s[]="I love Linux\0\0\0&q ...

  9. c语言中按位或赋值给变量,[转载]C语言位运算符在单片机上的应用

    C语言位运算符 学过汇编的朋友都知道汇编对位的处理能力是很强的,但是C语言也能对运算对象进行按位操作,从而使C语言也能具有一定的对 硬件直接进行操作的能力.位运算符的作用是按位对变量进行运算,但是并不 ...

最新文章

  1. oracle 提取当天日志,powershell提取日志内容
  2. 【计算机网络】数据链路层 : 广域网 ( HDLC 协议 | HDLC 站 | HDLC 帧格式 | HDLC 帧类型 | PPP 协议 与 HDLC 协议 对比 )
  3. 一个多线程死锁案例,如何避免及解决死锁问题?
  4. Unknown column 'password_lifetime' in 'field list';创建数据库时创建用户,修改用户时报错
  5. Google Test(Primer)(三)——断言
  6. java应用程序无法启动,Apache Tomcat / 6.0.32 - Web应用程序无法启动
  7. 缺陷架构定义及缺陷管理
  8. java 合并csv_用java将三个csv表格文件,整合数据组合成一个文件。
  9. 最新Mac安装/卸载pip教程
  10. SQL如何本地数据库连接服务器的数据库
  11. android -------- ConstraintLayout 宽高比和偏移量比(三)
  12. tamura纹理特征 JAVA_tamura纹理特征算法
  13. 第八章:贪心+二分 题目::Aggressive cows
  14. ArcGIS读取天地图2.0
  15. excel组合汇总_Excel汇总20150105
  16. 网站PC端与wap端适配
  17. 因为洋红色被告垄断,德国电信心塞
  18. sinon spy_Sinon教程:使用嘲弄,间谍和存根进行JavaScript测试
  19. 穿过网络防火墙监视的木马下载器(转)
  20. 360浏览器默认极速

热门文章

  1. JAVA计算机毕业设计毕业生导师双选系统Mybatis+系统+数据库+调试部署
  2. Vue 深度选择器:deep()与::v-deep详解
  3. 北大计算机博士后岗位需求,北京大学戴志飞课题组招聘博士后及科研助理
  4. python tkinter制作用户登录界面
  5. ios修改apn的插件_苹果苹果手机的iOS设置APN详解
  6. 视频播放/暂停图标的切换
  7. 七种主要的材料结构分析方法 - 热分析
  8. 单片机IO口操作总结
  9. mysql是自主可控吗_自主可控是什么?
  10. Ajax旧瓶装新酒的噱头--技术简介