二进制存储数据的读取与改变某一位的值
/// <summary>
/// 取某一位的设置 index 第几位
/// </summary>
/// <returns></returns>
public int GetIndexNum(int index )
{
int num;//存储的值
return System.Convert.ToByte(num) >> (index -1)& 1;
}
/// <summary>
/// 将整数的某位置为0或1
/// </summary>
/// <param name="index">要改变的某位</param>
/// <param name="a">整数,要改变的值</param>
/// <param name="flag">是否置1,TURE表示置1,FALSE表示置0</param>
/// <returns>返回修改过的值</returns>
public static int ChangeNumInIndex(int index, int a, bool flag)
{
//0x表示此数为16进制表示方法
//0x1表示为2进制就是0001
if (flag)
{
// 0001 向左移相应位置 a=a|(0x1 << System.Convert.ToByte(index));
//或运算:| 两者都为0为0,否则为1
a |= (0x1 << System.Convert.ToByte(index));
}
else
{
//非运算:~ 1取0 0 取1
//&—逻辑与 参加运算的两个对象只要有一个为1,其值为1。
a &= ~(0x1 << System.Convert.ToByte(index));
}
return a;
}