& is the bitwise logical and operator – 执行2个整数值的操作。
WHERE (sc.Attributes & 1) = 0
上面的代码检查sc.Attributes是否是偶数。说第一个位没有设置是一样的。
由于列的名称虽然:“属性”,那么“1”值可能只是一些具有一些外部含义的标志。
对于存储在数字的属性的每个标志,通常使用1个二进制数字。所以要测试第一个位,你使用sc.Attributes& 1,测试第二个你使用sc.Attributes& 2,测试第三个使用sc.Attributes& 4,测试第四个使用sc。属性&8,…
= 0部分正在测试以查看第一个位是否未设置。
一些二进制例子:(==显示操作的结果)
//Check if the first bit is set, same as sc.Attributes&1
11111111 & 00000001 == 1
11111110 & 00000001 == 0
00000001 & 00000001 == 1
//Check if the third bit is set, same as sc.Attributes&4
11111111 & 00000100 == 1
11111011 & 00000100 == 0
00000100 & 00000100 == 1