测试Flags Enum中是否只设置了一个位

时间:2013-10-15 08:42:07

标签: c# bit-manipulation enum-flags

所以我有一个标志Enum

public Enum test
{
   test1 = 1,
   test2 = 2,
   test3 = 4,
   etc.
}

如何测试那一位,只设置一位?

我以前100%完成了这项工作,但我的思绪不在于此!

1 个答案:

答案 0 :(得分:13)

要检查数字中是否只设置了一个位,该数字必须(根据定义)为2的幂。因此,您可以使用以下内容进行测试:

int intVal = ((int)myEnumFlags);
bool singleBitIsSet = intVal != 0 && (intVal & (intVal-1)) == 0;

我最喜欢的参考资料:

http://aggregate.org/MAGIC