stm32C语言之位操作

好久没写博客了,这段时间太懒没有好好学习,也不知道要写点什么,马上又要期末了,趁期末前还有些时间要赶快补补自己的进度。这段时间真的是很罪过了。一直在学嵌入式linux开发,到基础c语言部分,本想着就直接过了,但有的知识点已经忘了,还是得快速的看一遍,因为在嵌入式驱动开发中,c语言相对来说也是一个比较重要的开发工具。

刚开始接触32的时候,好多代码都用到了位操作,尤其在32寄存器版本的开发中,位操作能让开发者更容易的了解到驱动开发的底层配置及原理。

接下来就32常用的位操作简单介绍
1、左移<<
    乘法(乘2)
   m=m<2、右移>>
   除法(除以2)
  右移看符号位,如果负数右移,右移后首位补1
       ·················       正数  ····,   ············  补0
  负数右移结果永远不为0
3、与 &
   a & 0 ——> 0
  &:屏蔽
    int a=0x1234;
     a&0xff00; // 屏蔽低8位,取出高8位
   a & 1 ——>a
 &: 取出
 &: 清零器 
4、或 |
   a | 0 =a
   a | 1 =1
 设置为高电平的方法

设置一个资源的bit5为高电平,其他位不变
int a;
a=a | 100000 ——>a=(a | (0x1<<5))
清除第五位
a=a & 011111——>a=(a&(~(0x1<<5)))
5、异或 ^
  1^1=0    0^0=0
  1^0=1  
  多用于加密算法
  用于两个数的交换(不增加另一个变量)
  int fun()
  {
  int a=20;
  int b=30
  //交换代码
  a=a^b;
  b=a^b;
  a=a^b;
  }  

  
 

你可能感兴趣的:(stm32)