接位操作,直接操作INT数据类型的某一位_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 接位操作,直接操作INT数据类型的某一位

接位操作,直接操作INT数据类型的某一位

 2013/11/6 16:10:50  咒语  博客园  我要评论(0)
  • 摘要:1///<summary>2///根据Int类型的值,返回用1或0(对应True或Flase)填充的数组3///<remarks>从左侧最高位开始向右索引</remarks>4///</summary>5///<paramname="value"></param>6///<returns></returns>7publicList<bool>GetBitList(intvalue)8
  • 标签:数据类型 数据 操作

 

 1   /// <summary>
 2         /// 根据Int类型的值,返回用1或0(对应True或Flase)填充的数组
 3         /// <remarks>从左侧最高位开始向右索引</remarks>
 4         /// </summary>
 5         /// <param name="value"></param>
 6         /// <returns></returns>
 7         public List<bool> GetBitList(int value)
 8         {
 9             var list = new List<bool>(32);
10             for (var i = 0; i <=31; i++)
11             {
12                 var offset = (int)Math.Pow(2, i);
13                 var rst = (value & offset) == offset;
14                 list.Add(rst);
15             }
16             return list;
17         }
18 
19         /// <summary>
20         /// 返回Int数据中某一位的值(0或1)
21         /// <remarks>从左侧最高位开始向右索引</remarks>
22         /// </summary>
23         /// <param name="value"></param>
24         /// <param name="index">32位数据位的具体索引值0~31</param>
25         /// <returns>返回值为-1表示获取值失败</returns>
26         public int GetBitValue(int value, ushort index)
27         {
28             if (index > 31) return -1; //超过32位索引
29             var offset = (int)Math.Pow(2, index);
30             var rst = (value & offset) == offset ? 1 : 0;
31             return rst;
32         }
33 
34         /// <summary>
35         /// 设定Int数据中某一位的值(0或1)
36         /// <remarks>从左侧最高位开始向右索引</remarks>
37         /// </summary>
38         /// <param name="value">位设定前的值</param>
39         /// <param name="index">32位数据位的具体索引值0~31</param>
40         /// <param name="bitValue">true设为1,false设为0</param>
41         /// <returns>返回位设定后的值</returns>
42         public int SetBitValue(int value, ushort index, bool bitValue)
43         {
44             if (index > 31) throw new ArgumentOutOfRangeException("index"); //超出32位索引
45             var offset = (int)Math.Pow(2, 31-index);
46             var rst = bitValue ? (value | offset) : (value ^ offset);
47             return rst;
48         }

 

 

接位操作,直接操作INT数据类型的某一位
32位INT用到31天的每个月,很强大哟。嘿嘿~~~~~具体作用,就看人和项目需求了。

发表评论
用户名: 匿名