一、按位写入1
uint32_t writeBit (1 << 5) // 第5位的掩码
uint32_t value = 0x12341234;
// 设置第5位为1
value |= writeBit;
原理就是原值与掩码… 00010000进行按位相与,与0相交的位还是等于原来的值,与1相交的位则变为1。
二、按位写入0
uint32_t writeBit (0 << 5) // 第5位的掩码
uint32_t value = 0x12341234;
// 设置第5位为1
value &= ~writeBit;
原理就是按位取反相交,掩码… 00010000取反后为…11101111,按位相交,与为1的位相交保持原值,与为0的位相交为0。
三、按位读
uint32_t readBit (0 << 5) // 第5位的掩码
uint32_t value = 0x12341234;
// 设置第5位为1
bool readvalue = (value & readBit) != 0;