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秒

 

posted @   悟透  阅读(314)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 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文件
点击右上角即可分享
微信分享提示