当前位置: 首页 > news >正文

朝花夕拾 · C语言 | 位运算篇

& 按位与 全1为1,有0则0
| 按位或 有1则1,全0为0
^ 按位异或 相同为0,相异为1
~按位取反 1取反为0,0取反为1
<<按位左移 按位左移,低位补0 num << n <===> num *2^n

>>按位右移 按位右移动,有符号数高位补符号位:无符号数高位补0

num > > n <===> num / 2^n

9&6

0000 0000 0000 0000 0000 0000 0000 1001

0000 0000 0000 0000 0000 0000 0000 0110

0000 0000 0000 0000 0000 0000 0000 0000
9 | 6
0000 0000 0000 0000 0000 0000 0000 1001
0000 0000 0000 0000 0000 0000 0000 0110
0000 0000 0000 0000 0000 0000 0000 1111
9^6
0000 0000 0000 0000 0000 0000 0000 1001

0000 0000 0000 0000 0000 0000 0000 0110

0000 0000 0000 0000 0000 0000 0000 1111

~9
~0000 0000 0000 0000 0000 0000 0000 1001

1111 1111 1111 1111 1111 1111 1111 0110
9 << 3

0000 0000 0000 0000 0000 0000 0000 1001 <<3

0000 0000 0000 0000 0000 0000 0100 1000
9>>3

0000 0000 0000 0000 0000 0000 0000 1001 >> 3

0000 0000 0000 0000 0000 0000 0000 0001

位运算的使用:

1.指定n位置1

0000 0000--》0000 1000
0000 0001 << 3
0000 1000
1010 0000 | 0000 1000
1010 1000 //低四位置1


num = num | 1 <<n;
1010 0001 | 0000 0001 << 6
0100 0000
1110 0001 //低六位置1

2.指定n位置0

1010 1010
1111 0111 == &~(1 << 3)
1010 0010 //低四位置0


1111 0111 <==> ~0000 1000 <==> ~(1 << 3)


num =num &~(1<< n);


0011 1100 1010 1010 & ~(1 << 10) & ~(1 << 11)
1111 1011 1111 1111
0011 1000 1010 1010
1111 0111 1111 1111
0011 0000 1010 1010 //置11和12位为0

3.两数交换(不使用中间变量)

a=a^b;

b=a^b;

a=a^b;


a^a==0

a^0==a

b=(a ^ b ) ^ b = a ^ b ^ b = a ^ ( b ^ b ) = a ^ 0 = a;
a=a ^ b = a ^ b ^ a = 0 ^ b = b;

两数交换(中间变量):
int tmp = 0;

tmp = a;

a=b;
b = tmp;


求和方式:
a=a+b;

b=a- b; ===>a + b - b = a

a=a- b; ===>a + b - b =a + b - a

位运算符优先级:

~ 大于 << >> 大于 & 大于 ^ 大于 |

http://www.jsqmd.com/news/1370425/

相关文章:

  • C++ noexcept操作符7大实战场景:从编译期检查到性能优化
  • 企业数字化转型中的数据埋点与异常检测实践
  • 大学生应该要考的证书有哪些?2026高质量考证指南与就业避坑建议
  • Unity画面优化利器:UniversalUnityDemosaics插件原理与实战指南
  • 广东热门的CNC精密加工厂家推荐指南银辰精密(广东销售中心) - 品牌优推
  • Unity打砖块游戏开发实战:从物理碰撞到对象池优化
  • Windows用户文件夹重命名:从原理到实践的安全操作指南
  • 2026 年至今,崇安诚信的冷库板回收施工公司推荐,用它换钱能省十几万?不少冷库老板还在当废品卖 - 行业严选官
  • Visual Studio 2022离线安装全攻略:内网环境部署与模块化布局实战
  • DIFI学习-入门之workflow
  • AI模型硬件化:从软件部署到芯片固化的技术演进与应用前景
  • 西施浣纱袜业:世界袜都年产超250亿双,为什么还需要一个……
  • 5分钟搞定GTNH汉化:让百万字模组包变中文的完整指南
  • 2026年度江苏AI超级公司系统怎么选?
  • 链表数据结构:核心操作与工程实践优化
  • 乐陵市瓷砖空鼓维修上门推荐_2026山东半岛价格行情与价格表_卫生间厨房墙砖阳台地砖客厅 - 雨婺虹修缮
  • 大规模数据迁移的故障演练:复盘应留下什么
  • 《Python 封装不是“锁门”,而是“贴标签”!深入 property、伪私有与 slots 的哲学》
  • C# OPC UA服务器开发实战:从协议原理到工业数据采集实现
  • C++ explicit关键字:从隐式转换陷阱到类型安全编程实践
  • 【内燃机】模拟六冲程内燃机(提供详细的热力学建模和动态可视化)【含Matlab源码 15925期】
  • Unity渐变着色器资源包:原理、应用与性能优化全解析
  • Excel实现3/10打卡系统:可视化进度管理与团队协作
  • 校园食堂微信点餐系统:SSM+VUE技术实现与优化
  • MHmarkets:从用户体验路径反看客户支持的逻辑
  • WandEnhancer:解锁WeMod专业版的终极本地增强方案
  • 找香杉防腐木直销工厂怎么选择才靠谱?南达木业 - 品牌优推
  • 三步彻底解决C盘空间不足问题:WindowsCleaner终极指南
  • 从技术评估到生产落地:如何理性验证高性能组件的真实能力
  • Unity街机载具控制器AVC:简化物理实现爽快驾驶手感