总结一下位操作常用的几个技巧:
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位更新为v
int UpdateBit(int num, int v)
{
int mask = ~(1 << i);
return (num & mask) | (v << i);
}5.清除最低有效位
c = c & (c-1);

本文介绍了位操作中常见的几种技巧,包括如何获取特定位的状态、如何将特定位置为1、如何将特定位清零以及如何更新特定位的值等。通过具体的代码示例,帮助读者更好地理解和掌握这些位操作的基本方法。
847

被折叠的 条评论
为什么被折叠?



