这个位操作语法看不懂,求解释!

2019-07-15 14:54发布

我是在看一个单片机的书,有一句是这样写的:

PB_ODR = (1<<1) | (1<<0);

看不懂,求解释。


.

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
liujinyi016
1楼-- · 2019-07-15 20:35
1<<1 就是10,也就是2
1<<0,就是01,也就是1
| 相当于+,也就是3
jiciwi
2楼-- · 2019-07-16 00:52
 精彩回答 2  元偷偷看……
impig33
3楼-- · 2019-07-16 06:05
本帖最后由 impig33 于 2016-2-29 17:36 编辑
jinyi7016 发表于 2016-2-29 17:10
1

结果就是3,二进制就是11 ?

这一句用在单片机上完整的意思是什么呢?

impig33
4楼-- · 2019-07-16 09:35
jiciwi 发表于 2016-2-29 17:19
左移+按位或,这样就只对要操作的位进行置1,不影响其它的位

这一句用在单片机上完整的意思是什么呢?
impig33
5楼-- · 2019-07-16 13:21
jinyi7016 发表于 2016-2-29 17:10
1

为啥不直接赋值呢,要绕这么大个圈子
dabing89
6楼-- · 2019-07-16 13:50
PB_ODR = (1<<1) | (1<<0);

如果我这么定义你肯定能看懂
#define BIT(X)      (1 << X)//给B端口的第X位赋值为1  
#define LED_ON      PB_ODR &= ~BIT(X)//将第X位清0
#define  LED_OFF    PB_ODR |= BIT(X)//将第X位置1
PB_ODR = BIT(1)| BIT(0);
大概其就是这个意思啦。。。

一周热门 更多>