视频教程地址 https://www.bilibili.com/video/BV1NP4y1W7BN/
一个int(整数)或一个byte,如果我想获取或设置某位是0还是1可以用以下方法实现
/// <summary> /// 取整数的某一位 /// </summary> /// <param name="_Resource">要取某一位的整数</param> /// <param name="_Mask">要取的位置索引,自右至左为 索引0开始</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; } //=============================注意int与long类型区别======================== /// <summary> /// 取Long类型的某一位 /// </summary> /// <param name="_Resource">要取某一位的整数</param> /// <param name="_Mask">要取的位置索引,自右至左为 索引0开始</param> /// <returns>返回某一位的值(0或者1)</returns> public static long GetLongSomeBit(long _Resource, int _Mask) { return _Resource >> _Mask & 1; } /// <summary> /// 将Long类型 的某位置为0或1 /// </summary> /// <param name="_Mask">整数的某位</param> /// <param name="a">整数</param> /// <param name="flag">是否置1,TURE表示置1,FALSE表示置0</param> /// <returns>返回修改过的值</returns> public static long SetLongSomeBit(int _Mask, long a, bool flag) { if (flag) { a |= (1L << _Mask);//int与long 区别在这里 } else { a &= ~(1L << _Mask); } return a; }