文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>嵌入式C中常见位操作

嵌入式C中常见位操作

时间:2010-06-06  来源:guocai_yao

假设数是REGISTER(一般是某个寄存器),长度为LEN,pos为REGISTER的某一位,则0<=pos<=(LEN-1)

1. 用宏得到某数(一般是某个寄存器的某个状态位)的某位 。


#define BitGet(REGISTER,pos) ((REGISTER) >> (pos) & 1))


2. 把某位置1, 0<=pos<=LEN-1

 

#define BitSet(REGISTER,pos) ((REGISTER) |= 1<<(pos))

//或者将某些位同时置1,例如将第1、3、5位同时置1(pos1=1,pos2=2, …, posn=n, 0<=n<=(LEN-1))
REGISTER |= (1 << pos1)|(1 << pos3)|(1 << pos5);

 

3. 把某位清零0,0<=pos<=LEN-1

 

#define BitClr(REGISTER,pos) ((REGISTER) &= ~(1<<(pos))

//或者将某些位同时清0,例如将第0、2、4位同时清0(pos1=1,pos2=2, …, posn=n, 0<=n<=(LEN-1))
REGISTER &= ~((1<<pos0) | (1<<pos2) | (1<<pos4));


4. 把REGISTER的POS位取反,0<=pos<=LEN-1
 

#define BitRes(REGISTER,pos) ((REGISTER) ^= 1<<(pos))

//或者将某些位同时取反,例如将第1、2、4位同时取反(pos1=1,pos2=2, …, posn=n, 0<=n<=(LEN-1))
REGISTER (REGISTER) ^= ((1<<pos1) | (1<<pos2) | (1<<pos4))

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载