请问给位大虾能帮忙解释一下这几个宏定义吗,特别是后面的运算是怎么进行的,谢谢
typedef unsigned char u8;
#define BSET(X,Y) ((X) |= (u8)(1 << (Y)))
#define BCLR(X,Y) ((X) &= (u8)(~(1 << (Y))))
#define BXOR(X,Y) ((X) ^= (u8)(1 << (Y)))
#define BCOM(X,Y) ((X) ^= (u8)(1 << (Y)))
#define BTS(X,Y) ((X) & (u8)(1 << (Y)))
#define BTEST(X,Y) ((X) & (u8)(1 << (Y))) |