C# 检查更多整数中的(不同)集合位的最快方法

C# 检查更多整数中的(不同)集合位的最快方法,c#,bitwise-operators,C#,Bitwise Operators,如果我想检查是否设置了特定的位,那么(在我看来)需要一个简单而快速的代码 bool setbit(整数,整数位置) { return((number)&(1检查掩码中给定的所有位是否设置为一个数字的一般方法是: (number & mask) == mask 在这种情况下,将通过在给定位置设置位来制作掩模: int mask = (1 << pos1) | (1 << pos2) | (1 << pos3) | (1 << pos4);

如果我想检查是否设置了特定的位,那么(在我看来)需要一个简单而快速的代码

bool setbit(整数,整数位置)
{ 

return((number)&(1检查掩码中给定的所有位是否设置为一个数字的一般方法是:

(number & mask) == mask
在这种情况下,将通过在给定位置设置位来制作掩模:

int mask = (1 << pos1) | (1 << pos2) | (1 << pos3) | (1 << pos4);

intmask=(1harolds答案的更灵活版本

用法

实施

public static bool BitsAreSet(int number, params int[] bitPositions)
{
      var mask = 0;

      foreach (var bitPosition in bitPositions)
          mask |= (1 << bitPosition);

      return (number & mask) == mask;
}
public static bool BitsAreSet(this int number, params int[] bitPositions)
{
    var mask = 0;

    foreach (var bitPosition in bitPositions)
        mask |= (1 << bitPosition);

    return (number & mask) == mask;
}
实施

public static bool BitsAreSet(int number, params int[] bitPositions)
{
      var mask = 0;

      foreach (var bitPosition in bitPositions)
          mask |= (1 << bitPosition);

      return (number & mask) == mask;
}
public static bool BitsAreSet(this int number, params int[] bitPositions)
{
    var mask = 0;

    foreach (var bitPosition in bitPositions)
        mask |= (1 << bitPosition);

    return (number & mask) == mask;
}
公共静态布尔位集合(此整数编号,参数int[]位)
{
var-mask=0;
foreach(位位置中的变量位位置)

mask |=(1
number&mask==mask
where
mask=1更快?你真的认为这种方法是应用程序的瓶颈吗?好吧,更漂亮的特性会更好(这种方法在分支树的叶节点调用,因此优化非常有用)。
0b10011010.BitsAreSet(0, 3, 4, 7)
public static bool BitsAreSet(this int number, params int[] bitPositions)
{
    var mask = 0;

    foreach (var bitPosition in bitPositions)
        mask |= (1 << bitPosition);

    return (number & mask) == mask;
}