不好意思再问......但我似乎二进制奋斗...... 我偶然发现了以下行如果与二进制参数条件
MGC_SSPBUF_REG = (GESTIC_I2C_ADDR << 1) | 1; // write Address to MGC3130
除了一个事实,即不`吨知道,为什么一个人会将地址转移到左边以便保存它,但我无法理解这个OR操作。
将地址ORed加“1”将始终导致1111 1111,不是吗?
我在C编程与Microchip PIC18F14K50当检查由另一家公司我碰到下面一行迷迷糊糊书面 代码:
if(MGC_SSPCON2_REG & 0x1F) { // MSSP not idle
...
}
现在,MGC_SSPCON2_REG实现如下
#define MGC_SSPCON2_REG SSPCON2
其中SSPCON是8位MSSP控制寄存器(在I2C模式下)。
我不明白,这是如何if条件的作品。当8位二进制数的所有位都设置为1时是否为真? 就我所知,参数是8位寄存器和二进制数0001 1111(0x1F)上的位操作。
我希望我提供了足够的代码来理解问题。我并不想详细了解登记工作的细节。
预先感谢您的帮助:)
非常感谢您的澄清:) – user3554329