我正在浏览一些c ++代码,并看到了以下内容,据我所知,我想知道它的作用。除了“波浪号是毁灭者”之外,我没有在网上看到其他任何东西
#define i2c_scl_release() \
*_sclDirReg &=~ _sclBitMask
我理解这个定义,但是我想弄清楚&=~
的作用。
忽略任何最佳做法/格式问题。我在github上找到了它,它与我正在查看的内容有关,因此我想了解它。两者都键入uint8_t
。谢谢!
答案 0 :(得分:2)
*_sclDirReg &=~ _sclBitMask
可以读取为:
*_sclDirReg = *_sclDirReg & (~_sclBitMask)
那一行代码:
_sclDirReg
(必须是指针)中读取值_sclBitMask
的按位求逆_sclBitMask
答案 1 :(得分:1)
答案 2 :(得分:0)
它采用_sclBitMask
的逆位掩码,并使用按位的_sclDirReg
运算符将其组合为and
所指向的内容。
您可以将其重写为:
*_sclDirReg = *_sclDirReg & (~sclBitmask);
答案 3 :(得分:0)
首先将位掩码反转~ _sclBitMask
,然后从_sclBitMask
在*_sclDirReg &=
中设置的所有位中清除指向的变量。
通过这种方法,您可以重置_sclDirReg
中属于彼此的某些位标志,而无需触摸其中的其余位标志。
答案 4 :(得分:0)
清除*_sclDirReg
中_sclBitMask
中已设置(等于1)的位(设置为零):
*_sclDirReg = *_sclDirReg & (~_sclBitMask)