导航

位运算

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编辑  收藏  举报