【发布时间】:2021-10-23 11:18:05
【问题描述】:
也许这个问题会有点愚蠢,但我想知道为什么 如果我们想在寄存器的某个特定位置写 0 我们必须这样写:
PORTB &= ~(1 << 2);
而不是这样(因为它不起作用):
PORTB &= (0 << 2);
这里的 0 是否意味着像 0b00000000(对于 8 位寄存器)?
【问题讨论】:
-
0为零,无论您移动多少。计算机不知道您的意思是一个特定的零,它只是将两个整数与。 -
~(1<<2)是(8 位二进制)~(0b00000100)是0b11111011。当您与该值 AND (&) 时,除位 2 之外的所有位都保持不变