C中 &=~(3<<24) 和 |=(1<<24) 意思
&=~(3<<24) 和 |=(1<<24) 的作用是修改二进制 0和1 的位。
1. 介绍
假设有一个 32bit 的CPU,CPU 在一个时钟周期可以处理32bit 的数据。
32bit 就代表有 32个 0 或 1 ,编号是 0 至 31 ,这是人类书写方法,CPU 里是 31 至 0 。
在通常写法中,为了方便,将每4位(bit) 分为 一组,如下:
1 2 3 | 1000 0000 0010 0001 0000 0001 0000 0010 ------------------------------------------ 31 0 |
2. 与运算
看下面的这个句子,想要看语句的优先级。
&=~(3<<24)
1. 先算 (3<<24), 3的二进制 左移 24位。
1 2 3 4 5 | 移动前: 0000 0000 0000 0000 0000 0000 0000 0011 移动后: 0000 0011 0000 0000 0000 0000 0000 0000 |
2. 再算 ~ (按位取反)
1 2 3 4 5 6 7 8 | 移动后: 0000 0011 0000 0000 0000 0000 0000 0000 上面的值按位取反: 1111 1100 1111 1111 1111 1111 1111 1111 十六进制显示: 0xFCFFFFFF |
3. &= (=号就是变量赋值的=号意思)
& 是将上面按位取反后,和某个值按位与(假设& 左边是某个寄存器)
1 2 3 4 | 某寄存器值:1001 0000 1000 0001 1100 1011 1100 0000 取反后的值: 1111 1100 1111 1111 1111 1111 1111 1111 ------------------------------------------------------- 按位与运算:1001 1100 1000 0001 1100 1011 1100 0000 |
总结:&=~(3<<24) 作用就是只修改 第24位的值,其他位的值不变。
3. 或运算
|=(1<<24) 的过程和上面 与运算 过程一样,就不重复说明了。
参考:
https://www.bilibili.com/video/BV1ba411g78y 时间:09分01秒
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2021-02-03 Windows不分区VHD装Linux多系统(四):VM虚拟机里Ubuntu18引导修改
2021-02-03 Windows不分区VHD装Linux多系统(三):VM虚拟机安装ubuntu18.04
2021-02-03 Windows不分区VHD装Linux多系统(二):VM创建ubuntu18.04虚拟机
2021-02-03 Windows不分区VHD装Linux多系统(一):创建VHD文件