#define setbit(x,y) x|=(1<<y) // 位置1
#define clrbit(x,y) x&=~(1<<y) // 位置0
#define reversebit(x,y) x^=(1<<y) // 位取反
#define getbit(x,y) ((x) >> (y)&1)// 位取值
bool getBit(word n, word k)
{
bool bx;
if(((n >> k) & 1) == 1)
bx = true;
else
bx = false;
return bx;
// return (n>>(k-1)) & 1; // shift n with k - 1 bits then and with 1
}
uint16_t resetBit(uint16_t n, int8_t k)
{
uint16_t nx;
nx = 0x1 << k;
nx = ~nx;
n = n & nx;
return n;
}
uint16_t setBit(uint16_t n, int8_t k)
{
uint16_t nx;
nx = 0x1 << k; // set k bit of nx = 0;
return n = nx | n;
}