1 ///2 /// 根据Int类型的值,返回用1或0(对应True或Flase)填充的数组 3 /// 5 /// 6 ///从右侧开始向左索引(0~31) 4 ///7 public static IEnumerable GetBitList(int value) 8 { 9 var list = new List (32);10 for (var i = 0; i <= 31; i++)11 {12 var val = 1 << i;13 list.Add((value & val) == val);14 }15 return list;16 }17 18 /// 19 /// 返回Int数据中某一位是否为120 /// 21 /// 22 /// 32位数据的从右向左的偏移位索引(0~31)23 ///true表示该位为1,false表示该位为0 24 public static bool GetBitValue(int value, ushort index)25 {26 if (index > 31) throw new ArgumentOutOfRangeException("index"); //索引出错27 var val = 1 <32 /// 设定Int数据中某一位的值33 /// 34 /// 位设定前的值35 /// 32位数据的从右向左的偏移位索引(0~31)36 /// true设该位为1,false设为037 ///返回位设定后的值 38 public static int SetBitValue(int value, ushort index, bool bitValue)39 {40 if (index > 31) throw new ArgumentOutOfRangeException("index"); //索引出错41 var val = 1 << index;42 return bitValue ? (value | val) : (value & ~val);43 }
2013-11-7优化了一下
接位操作,直接操作INT数据类型的某一位
32位INT用到31天的每个月,很强大哟。嘿嘿~~~~~具体作用,就看人和项目需求了。