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天的每個月,很強大喲。嘿嘿~~~~~具體作用,就看人和項目需求了。