• C#按位操作,直接操作INT数据类型的某一位


     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天的每个月,很强大哟。嘿嘿~~~~~具体作用,就看人和项目需求了。

  • 相关阅读:
    HDU 4508
    HDU 4503
    HDU 4532
    HDU 4544
    HDU 3167 KMP
    HDU 4542
    HDU 4528
    【70】自然语言处理与词嵌入
    【69】循环神经网络
    【68】一维和三维卷积
  • 原文地址:https://www.cnblogs.com/atwind/p/3410098.html
Copyright © 2020-2023  润新知