C++位操作总结

来源:互联网 发布:淘宝上便宜衣服能买吗 编辑:程序博客网 时间:2024/05/13 13:00

总结一下位操作常用的几个技巧:
1.获取

判断某位是否是否为1.

bool GetBit(int num, int i){return ((num & (1 << i)) != 0);}    
2.置位

将某一位置为1。

int SetBit(int num, int i){return num | (1 << i);}
3.清零

将第某几位置为0。

//第i位清零int ClearBit(int num, int i){int mask = ~(1 << i);return num & mask;}
//最高位至i位清零int ClearBitsMSBthroughI(int num, int i){int mask = ~((1 << i) - 1);return num & mask;}
//i位至0位清零int ClearBitsIthrough0(int num, int i){int mask = ~((1 << (i+1)) - 1);return num & mask;}
//i至j位清零(i>j)int ClearBitsIthroughJ(int num, int i, int j){int mask = ~((1 << (i+1)) - (1 << j));return num & mask;}
4.更新

将指定位更新为新的值。

//num的第i位更新为vint UpdateBit(int num, int v){int mask = ~(1 << i);return (num & mask) | (v << i);}
5.清除最低有效位

c = c & (c-1);













0 0