首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在C/C++中0b00和0b11的含义是什么?

在C/C++中0b00和0b11的含义是什么?
EN

Stack Overflow用户
提问于 2020-01-13 13:08:34
回答 3查看 7.3K关注 0票数 0

我有一个小问题,希望有一个简单的答案。在C/C++中编程Arduino时,会出现一行"DDRB |= 0b00101000;“。虽然我知道DDRB是端口B的数据方向寄存器,以及"0b00“之后的数字的含义(这是插槽13到9),但我仍然不知道"0b00”是什么意思。

在我只读过的定义中,它意味着高(而0b11表示低),但这意味着什么?

完整代码:

代码语言:javascript
代码运行次数:0
运行
复制
#include <avr/io.h>
#include <util/delay.h>

int main (void) {

  float seconds = 0.5;
  int time = 1000 * seconds;

  DDRB |= 0b00101000;

  while (1) {

    PORTB |= 0b00001000; 
    _delay_ms(time);
    PORTB &= 0b11110111; 
    PORTB |= 0b00100000;
    _delay_ms(time); 
    PORTB &= 0b11011111; 
  }
  return 0;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-01-13 13:37:14

0b表示需要二进制表示的数字。

对于数据方向寄存器,将位设置为1将使各自的行输出,而设置为0将使其输入。

DDRB |= 0b00101000将使用掩码在DDRB中的位当前值之间执行二进制或操作。

这将导致DDRB = 0b××1×1xxx,因此这意味着DDRB将保留第7和第6行的值。这个操作基本上将第5行和第3行设置为输出,其余部分保持原样。

票数 7
EN

Stack Overflow用户

发布于 2020-01-13 13:29:58

当你把你的问题贴上"Arduino“标签时,你可能会感兴趣的是,除了标准的c++ 0b.IDE还以B00101000格式提供所有8位二进制数字的组合,有前导零,也有前导零。

通常,十六进制表示法(在你的例子中是0x28)甚至更容易读懂。

票数 1
EN

Stack Overflow用户

发布于 2020-01-13 13:14:54

线

代码语言:javascript
代码运行次数:0
运行
复制
DDRB |= 0b00101000

基本上,使用掩码0b00101000进行位或,并将结果重新分配给DDRB。

0b指出,接下来发生的任何事情都应该解释为二进制,因此更容易看出您正在掩蔽哪些位。

代码只是将隐藏的比特设置为1到更高,而其他比特则保持不变。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59717295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档