以前在写程序时常用到判断第几位状态是1,或是0,当触发一个高低电平时,会产生不同的变化,此时就要快速的判断某位是高电平还是低电平,也就是0或1。以前是用与操作判断是否为1,如:
int a=242;
int b=(int)Math.Pow(2,index) & a;
if(b==0)
'index 位是0,否则是1
让某位快速置1或0,自己写的方法太笨,直接从网上搜了一段,感觉比较简单和快速,留下为印!
/// <summary>
/// 取整数的某一位
/// </summary>
/// <param name="_Resource">要取某一位的整数</param>
/// <param name="_Mask">要取的位置索引,自右至左为0-7</param>
/// <returns>返回某一位的值(0或者1)</returns>
public static int getIntegerSomeBit(int _Resource, int _Mask)
{
return _Resource >> _Mask & 1;
}
/// <summary>
/// 将整数的某位置为0或1
/// </summary>
/// <param name="_Mask">整数的某位</param>
/// <param name="a">整数</param>
/// <param name="flag">是否置1,TURE表示置1,FALSE表示置0</param>
/// <returns>返回修改过的值</returns>
public static int setIntegerSomeBit(int _Mask, int a, bool flag)
{
if (flag)
{
a |= (0x1 << _Mask);
}
else
{
a &= ~(0x1 << _Mask);
}
return a;
}
调试后,感觉简单快速易懂。