基本操作
1.获取数位-位与运算(用1)
位与运算(用1)
newNum = num(xxxxxixxxxx) & 0000100000
如果newNum为0 那第 i 位为0, 如果newNum不为0 那第 i 位为1
bool getBit(int num,int i){
return ( (num&(1<<i))!=0 );
}
2.置1-位或运算(用1)
位或运算(用1)
newNum = num(xxxxxixxxxx) | 0000100000
将num的第 i 位置1
int setBit(int num,int i){
return num | (1<<i);
}
3.置0-位与运算(用0)
位与运算(用0)
newNum = num(xxxxxixxxxx) & 1111011111
将num的第 i 位置0
int setBit(int num.int i){
int mask=~(1<<i);
return num & mask;
}
4.更新数位/置0或1
1.将第 i 位清零 newNum=num(xxxxxixxxxx) & 11111011111 = xxxxx0xxxxxx
2.待写入值 V 左移 i 位,得到000000V000000
3.然后位或操作 target= xxxxx0xxxxxx | 000000V000000 = xxxxxxVxxxxx
int updateBit(int num,int i,int v){
int newNum= num & ~(1<<i) ;
int V=v<<i;
return newNum | V;
}