我试图学习如何在C语言中编程微控制器,并有一个关于位分配的问题。例如,我要声明一个8位数字。

binary_number = 0b00000000;

现在,假设我只想设置位3。我看到的示例文本使用如下操作:
binary_number |= (1<<4)

我理解得对吗?我们取二进制数,然后把结果赋给二进制数?
同样,重置此位时:
binary_number &= ~(1<<4)

我们基本上是取二进制数('or-ing'),然后用0b00001000将其赋给该表达式的结果?
我理解得对吗?

最佳答案

是的,你的理解是正确的!:)
但有点变化。。。
要重置或设置位3,只需左移1到3个位置。
1<1<使用按位或运算符(|)设置第X位。
n |=1<这将设置位x。
使用按位和运算符(&)重置第X位。
n&=~(1<这将重置位x。

关于c - 在C微 Controller 中设置位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22433414/

10-11 20:54