1 /// <summary> 2 /// 根据Int类型的值,返回用1或0(对应True或Flase)填充的数组 3 /// <remarks>从右侧开始向左索引(0~31)</remarks> 4 /// </summary> 5 /// <param name="value"></param> 6 /// <returns></returns> 7 public static IEnumerable<bool> GetBitList(int value) 8 { 9 var list = new List<bool>(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 /// <summary> 19 /// 返回Int数据中某一位是否为1 20 /// </summary> 21 /// <param name="value"></param> 22 /// <param name="index">32位数据的从右向左的偏移位索引(0~31)</param> 23 /// <returns>true表示该位为1,false表示该位为0</returns> 24 public static bool GetBitValue(int value, ushort index) 25 { 26 if (index > 31) throw new ArgumentOutOfRangeException("index"); //索引出错 27 var val = 1 <<index; 28 return (value & val) == val; 29 } 30 31 /// <summary> 32 /// 设定Int数据中某一位的值 33 /// </summary> 34 /// <param name="value">位设定前的值</param> 35 /// <param name="index">32位数据的从右向左的偏移位索引(0~31)</param> 36 /// <param name="bitValue">true设该位为1,false设为0</param> 37 /// <returns>返回位设定后的值</returns> 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天的每个月,很强大哟。嘿嘿~~~~~具体作用,就看人和项目需求了。