谁能给这段代码写个注释,谢谢,让我明白代码怎么处理的。

来源:百度知道 编辑:UC知道 时间:2024/06/27 18:58:16
#define BIT3 (0x1 << 3)
static int a;

void set_bit3(void)
{
a |= BIT3;
}
void clear_bit3(void)
{
a &= ~BIT3;
}

#define BIT3 (0x1<<3)// 16进制数"1"左移3位,实际上变为 8
// 所以有 BIT3 = 8

void set_bit3(void)
{
a |= BIT3;
// "|"为"或"运算符,两个位若同为0则所得值为0,否则为1
// |= 类比于+= 即 a = a | BIT3
}
void clear_bit3(void)
{
a &= ~BIT3;
// "&"为"位与"操作,两个位都为1则结果为1,否则结果为0
// "~"为"按位取反"操作,若当前为为1,则结果为0,反之若
// 当前位为0则结果为1
}
// 以上操作都是以二进制位为单位操作的

举个例子:
设:char a=39,b=45;
则有:
a&b = 37
因为
-------------------
39 00100111
45 00101101
37 00100101
-------------------
a|b = 47
-------------------
39 00100111
45 00101101
37 00101111
-------------------
~a = 216
-------------------
216 11011000