首先,你要知道~0化为二进制是11111111
其次,0x04化为二进制就是00000100.~(0x04))化为二进制就是11111011.
再者,你要熟悉“与”运算。就是1|1 == 1,1|0 == 1, 0|1 == 1, 0|0 == 0。
简单的说,就是遇到1结果就是1,只有2个都是0的时候结果才是0.
最后,这个运算,你要知道 运算符等级,可以化为(~0) == (a | ~(0x04))
这样看就很清楚了。因为~(0x04)只有第三位是0,其他位都是1,所以,结果中除了第三位之外,其他位绝对为1.这个时候,第三位就靠a的第三位来确定了。如果a的第三位为1,那么结果就是11111111.要是0的话,结果就是11111011了。
这样就可以验证a的第3位是否为1了。
追问不是不知道0x04=0x00000100,而是不知道它在这里是什么含义,所代表的模式代码是什么意思
追答就是一个十六位进制数,这里用于给GPIO_Mode_IN_FLOATING定义类型
追问![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/b7fd5266d0160924497a6e07d70735fae6cd344b?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
这个模式代码和相应的什么模式寄存器应该写什么数值是不一样的呢?
追答根据寄存器不同,数值肯定不一样,看应用的