首页 > 编程语言 > 详细

C语言位掩码

时间:2020-02-08 17:35:43      阅读:133      评论:0      收藏:0      [点我收藏+]

在嵌入式编程的时候,比如对芯片的某个寄存器的某一位置位或清零,可以使用位掩码

比如 REG是某个8位寄存器

1 /* 将REG第5位置位 */
2 REG  |= (1<<5); 
3 
4 /* 将REG第2和6位置位 */
5 REG  |= (1<<2) |(1<<6); 
 /* 将REG第5位清零 */
 REG  &=  ~(1<<5); 
 
 /* 将REG第2和6位清零 */
 REG  &=  ~( (1<<2) | (1<<6) ) ; 

其实上面的 1<< 5 就是0b000100000,,1<< 2 就是0b00000100 ,1<< 6 就是0b01000000

从而进一步使用宏定义

#define BIT2_MASK 0b00000100
#define BIT5_MASK 0b00100000
#define BIT6_MASK 0b01000000

从而程序变为

 /* 将REG第5位置位 */
 REG  |= BIT5_MASK; 

 /* 将REG第2和6位置位,两段代码效果一样 */
 REG  |= BIT2_MASK | BIT6_MASK; 
 REG  |= BIT2_MASK + BIT6_MASK; 

 /* 将REG第5位清零 */
 REG  &=  ~BIT5_MASK; 

/* 将REG第2和6位清零,两段代码效果一样*/ 
REG &= ~(BIT2_MASK | BIT6_MASK) ;
REG &= ~(BIT2_MASK + BIT6_MASK) ;

其中的BITx_MASK就称为位掩码

C语言位掩码

原文:https://www.cnblogs.com/sypspace/p/12284098.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!