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 |=(1number&mask==mask
wheremask=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;
}