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) 分为 一组,如下:

 1000 0000 0010 0001 0000 0001 0000 0010
------------------------------------------
31                                    0

 

 2. 与运算

看下面的这个句子,想要看语句的优先级。

 &=~(3<<24)

1. 先算 (3<<24), 3的二进制 左移 24位。

移动前:
0000 0000 0000 0000 0000 0000 0000 0011

移动后:
0000 0011 0000 0000 0000 0000 0000 0000

2. 再算 ~ (按位取反)

移动后:
0000 0011 0000 0000 0000 0000 0000 0000

上面的值按位取反:
1111 1100 1111 1111 1111 1111 1111 1111

十六进制显示:
0xFCFFFFFF

 3. &= (=号就是变量赋值的=号意思)

& 是将上面按位取反后,和某个值按位与(假设& 左边是某个寄存器)

某寄存器值: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 @ 2023-02-03 20:45  悟透  阅读(367)  评论(0)    收藏  举报