4

我一直在运行(别人的)这样的代码

Case
When (variable & (2|4|8|16)>0) Then ...
WHEN (variable & (1|32)>0 Then ...
...
End

variable我认为这里发生的事情是它正在测试变量的 2^1、2^2、2^3 或 2^4 位置是否有 1 或 0 。这是正确的吗?无论哪种方式,我仍然不清楚为什么这个表达式是这样写的。我无法找到有关此逻辑的任何文档,主要是因为我不知道该怎么称呼它。

4

1 回答 1

3

没错,“管道”符号|对应于按位 OR 运算符,而与号&对应于按位 AND 运算符(至少在某些数据库中)。

他们正在使用那些按位运算符检查位。他们这样做的最可能原因是“提高可读性”。例如,在写入时更容易查看正在检查哪些位

2|4|8|16 -- rather than 30
1|32     -- rather than 33
于 2012-08-21T15:25:39.263 回答