Bitwise Logic知道从服务器启用了什么

时间:2014-10-10 11:08:22

标签: c# bit-manipulation

我正在使用一些快速代码来帮助我对按位代码的逻辑(我第一次这样做)

基本上我有3个属性,每个属性ID为1,2,4

int A = 1 
int B = 2 
int C = 4 

让我们说A和C被检查,这将等于5,这个值将被保存到数据库中。好。

现在我需要找回使用该值检查的内容。

因此在示例中,值为5,那么我如何通过按位逻辑知道检查了哪些属性?

所以我不是要求你做我的工作,知道我做了什么,

int i = A & C;
// if i == 5, then we know it was A and C checked

但你是否需要为每种可能性做到这一点?

先谢谢

1 个答案:

答案 0 :(得分:2)

您只需检查以下条件:

i & A != 0  // true if A is set in i
i & B != 0  // true if B is set in i

话虽如此,在很多情况下,位域都是不合适的。特别是当您将结果值存储到数据库中时,通常最好只定义一些存储每个标志的列。