news 2026/7/10 11:40:46

C++基础知识点——位运算

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++基础知识点——位运算

一.位运算(最通俗版)

位运算就是直接对整数的二进制位(bit)进行操作,就像你拨动开关一样(0 代表关,1 代表开)。

计算机中所有数据都是以二进制存储的,位运算就是直接操作这些“0 和 1 的开关”。


常用的位运算符(C++ 为例)

1.与(AND)&
  • 规则:两个位都是 1 → 结果才是 1,否则是 0。

  • 例子:
    5(二进制 101) & 3(二进制 011) = 1(二进制 001)
    因为只有最低位都是 1。

2.或(OR)|
  • 规则:两个位只要有一个是 1 → 结果就是 1。

  • 例子:
    5(101) | 3(011) = 7(111)

3.异或(XOR)^
  • 规则:两个位不同 → 结果是 1,相同 → 结果是 0。

  • 例子:
    5(101) ^ 3(011) = 6(110)

4.取反(NOT)~
  • 规则:把每一位取反(1 变 0,0 变 1)。

  • 例子:
    ~5(假设是 8 位整数)
    5 = 0000 0101
    ~5 = 1111 1010(这是补码表示,实际值是 -6)

5.左移<<
  • 规则:把二进制位往左移动,右边补 0。

  • 例子:
    5(101) << 1 = 10(1010)
    相当于乘以 2

6.右移>>
  • 规则:把二进制位往右移动,左边补 0(对于无符号数)或补符号位(有符号数)。

  • 例子:
    6(110) >> 1 = 3(011)
    相当于除以 2 取整


二.为什么用位运算?

  • 速度快(CPU 直接支持)

  • 节省内存(可以用一个整数的不同位表示多个布尔状态)

  • 某些问题用位运算解决更简洁(比如状态压缩、位掩码)


举个例子(直观理解):

假设你有两个开关控制一盏灯:

  • 开关 A(位1)和开关 B(位2)

  • 灯亮(1)的条件是:A 和 B 都打开(1)→ 这就是&运算。

  • 灯亮的条件是:A 或 B 任意一个打开(1)→ 这就是|运算。


这就是位运算的“开关”本质 !

1.question:就那么简单吗?这个位运算,如果是,怎么去记忆?

对的,位运算的本质就是这么简单,核心就是对“0 和 1”进行开关一样的操作。
但实际运用时,它之所以看起来复杂,是因为我们把它和数学、逻辑、计算机内存结构结合起来用了。


🔧 如何记忆?

1. 用生活中的比喻记

  • &(与) →全部同意
    就像“两人都要按指纹才能开门”,缺一个都不行。

  • |(或) →有一个就行
    就像“两个门铃随便按一个就响”。

  • ^(异或) →不一样才行
    就像“两个人一个说开一个说关才执行,都说一样就不动”。

  • <<>>搬箱子
    左移是把箱子往左推,右移是把箱子往右推,空出来的地方补 0。


2. 记住 3 个核心用途

位运算在题目里常用在三个场景:

  1. 判断某一位是不是 1
    x & (1 << k)判断第 k 位是否为 1。

  2. 把某一位变成 1
    x | (1 << k)把第 k 位设为 1。

  3. 把某一位变成 0
    x & ~(1 << k)把第 k 位清 0。


3. 常用口诀(二进制视角)

& : 有 0 则 0 | : 有 1 则 1 ^ : 相同为 0,不同为 1 ~ : 0 变 1,1 变 0 << : 末尾补 0 >> : 末尾去掉

4. 从题目里记

最好的记忆方法就是动手做题
比如【二进制中的个数】,就是让你:

输入一个整数 n,输出它的二进制表示里有多少个 1。

你可以:

  1. n & 1判断最低位是不是 1。

  2. n >>= 1把 n 右移一位,相当于扔掉最低位。

  3. 重复直到 n 变成 0。

这样你就在用&>>解决实际问题了。


✅ 小结

  • 位运算本身操作简单(就是 0/1 开关)。

  • 记忆时用比喻和核心用途来记。

  • 多动手写代码,遇到问题再回头看运算规则

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 7:00:56

半导体行业正迈入前所未有的“千兆周期”

本文由半导体产业纵横&#xff08;ID&#xff1a;ICVIEWS&#xff09;编译自tomshardware行业分析认为&#xff0c;人工智能时代正在同时重塑芯片市场的各个方面。人工智能的浪潮正以前所未有的深度和广度重塑全球半导体产业。来自行业巨头与研究机构的一致预测表明&#xff0c…

作者头像 李华
网站建设 2026/7/10 12:31:05

八股文学习日常(虚拟机篇)

1.介绍JVM的内存模型JVM的内存模型共分为五大部分&#xff0c;虚拟机栈&#xff0c;方法栈&#xff0c;堆&#xff0c;元空间和程序计数器&#xff1a;1&#xff09;程序计数器&#xff1a;可看作当前线程执行字节码的行号显示器。用于存储当前线程执行方法的JVM指令地址。当执…

作者头像 李华
网站建设 2026/7/10 10:57:14

EmotiVoice能否生成双语混合语音?中英文夹杂合成实测

EmotiVoice能否生成双语混合语音&#xff1f;中英文夹杂合成实测 在智能语音助手、虚拟偶像和国际化内容创作日益普及的今天&#xff0c;用户早已不满足于“能说话”的TTS系统。他们期待的是更自然、更具表现力的声音——比如在一句中文里流畅插入“Zoom会议”、“deadline”或…

作者头像 李华
网站建设 2026/7/10 10:08:53

EmotiVoice语音合成系统灰度回滚机制设计要点

EmotiVoice语音合成系统灰度回滚机制设计要点 在智能语音助手、虚拟主播和有声内容平台日益普及的今天&#xff0c;用户早已不再满足于“能说话”的机器语音。他们期待的是富有情感、贴近真人表达的声音体验。EmotiVoice 正是在这一背景下脱颖而出的开源TTS引擎——它不仅支持多…

作者头像 李华
网站建设 2026/7/10 10:09:19

psycopg2-binary 全面教程:常用 API 串联与实战指南

大家好&#xff0c;我是jobleap.cn的小九。 psycopg2-binary 是 Python 连接 PostgreSQL 数据库的核心库&#xff08;psycopg2 的预编译二进制版本&#xff0c;无需编译依赖&#xff0c;开箱即用&#xff09;&#xff0c;本文将从环境准备、核心 API 讲解到实战案例&#xff0c…

作者头像 李华
网站建设 2026/7/10 10:03:10

Go + 边缘计算:工业质检 AI 模型部署实践指南

在工业生产领域&#xff0c;产品质检是保障出厂质量的关键环节。传统人工质检方式受限于人眼疲劳、主观判断差异等问题&#xff0c;存在效率低、漏检率高、成本攀升等痛点。随着AI计算机视觉技术的发展&#xff0c;基于图像识别的工业质检模型应运而生&#xff0c;但模型部署环…

作者头像 李华