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天的每個月,很強大喲。嘿嘿~~~~~具體作用,就看人和項目需求了。
轉載于:https://www.cnblogs.com/atwind/p/3410098.html