位运算
1 << 5 -> 100000
现在flag 8位,第三位为1为彩色,为0为黑白
现在希望清除第三位
#define Bit_Color (1 << 2) #define Clear_Color ((~Bit_Color) & 0xFF)
对Bit_Color取非的结果是机器字长多少位,对多少位取非,与0xFF,为截取低8位
#define Clear_Color ((~0xFF) | BitColor)
0xFF对于32位机器而言,是0x000000FF,并不指字长
测试代码
#include <stdio.h> #define TestBit_5 (1 << 5) //#define TestClear_5 (~TestBit_5) //#define TestClear_5 ((~TestBit_5) & 0xFF) #define TestClear_5 ((~0xFF) | TestBit_5) int main() { printf("0x%x\n", TestBit_5); printf("0x%x\n", TestClear_5); printf("0x%x\n", ~0xFF); return 0; }
posted on 2021-04-21 09:29 toughcactus 阅读(52) 评论(0) 编辑 收藏 举报