c语言精通学习「2」: 位操作

发布时间 2023-08-15 09:53:25作者: foorun

 1.位操作符

包括   

&  0&0=0 0&1=0 1&1=1  特定位清零 如11010101 & 11100111 = 11000101

|   0|0=0   1|0=1   1|1=1  特定位置一

~   ~0=1  ~1=0  逻辑取反是!,真变成加、假变成真  

^   1^1=0  0^0=1  1^0=0  特定位取反

<<  >>  左移或者右移一位,补零。嵌入式中都是无符号数采用逻辑移位

2.位操作在寄存器中的特殊作用

(1)操控硬件本质就是读写寄存器

(2)寄存器的特点就是按位进行规划和使用,但是寄存器的读写确实整体32位一起进行的

(3)寄存器操作要求就是:在特定位改变时不能影响其他位

(4)读  改 写,先把寄存器整体原来的值,然后在这个基础上修改想要修改的特定位,再将修改后的值整体写入寄存器,进而达到不修改其他位的基础下修改特定位。

3.如何运用位运算构建特定二进制数

(1)寄存器位操作经常需要特定位给特定值

  对寄存器定位置1或者清零需先构造一个特定的二进制数。  

(2)移位获取特定的为1的二进制数。

  比如bit3~bit7为1;0x1f<<3

  bit3~bit7为1,同时bit23~bit25为1,其余位为0;((0x1f<<3)|(7<<23))

(3)结合为取反获取特定0的二进制数

  bit3~bit7为0,同时bit23~bit25为0,其余位为1;~((0x1f<<3)|(7<<23))