bool getBit(int num, int shift) { return ( (num & (1 << shift)) != 0); } int setBit(int num, int shift) { return ( num | (1 << shift)); } int clearBit(int num, int shift) { int mask = ~ (1 << shift); return num & mask; } int clearBitMSBthroughShiftBit(int num, int shift) { int mask = (1 << (shift )) -1; return num & mask; } int clearBitMSBthroughShift0(int num, int shift) { int mask = ~ ((1 << (shift +1 )) -1); return num & mask; } int updateBit(int num, int shift, int v) //set i-th bit = v { int mask = ~ (1 << shift); return (num & mask) | (v << shift); }