您的位置:首页 > 编程语言 > C语言/C++

嵌入式C语言位运算之清位置位

2016-06-14 16:47 197 查看
如题,在嵌入式开发中,掌握位运算是节省开发时间和提高开发效率的一种高效方式。

我们不得不去熟悉如何快速掌握位运算这种高效的技巧,接下来看看程序。.

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
unsigned char num = 0xfe ;      //1111 1110
num &= ~(1 << 3 | 1 << 2)  ;    //1111 0010
printf("num:%x\n",num);
num |= (1 << 3 | 1 << 2);
printf("num:%x\n",num);
getchar();
return 0 ;
}
程序执行过程中,num &= ~(1 << 3 | 1 << 2) ; 这句话的意思是将0xfe的第2位和第3位清0,于是第一个printf输出是:0xf2

如果你想继续清往后的几位,可以接着在后面或(|)上要清的位数。这里的非(~)表示按位取反,&=表示与上对应的数,这里是按位与上位1,我们都知道按位与的概念就是有1为1,有0为0。

num |= (1 << 3 | 1 << 2) ;这句话的意思是将0xf2这个数的第2位和第3位置一,于是第二个printf输出是:0xfe;也就恢复成初始值0xfe了。这里按位或的概念想必都清楚,有1一定为1,全0才为0。根据这些特性,很快,我们就可以操作对应的位了。

在操作硬件寄存器中,也是要熟练的操作位,方法雷同,要根据数据手册说明书来进行操作,以前写过一些文章,大家可以翻出来看看,熟悉一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: