& is the bitwise logical and operator - Realiza la operación en 2 valores enteros.
WHERE (sc.Attributes & 1) = 0
El código anterior comprueba si sc.Attributes es un número par. Lo cual es lo mismo que decir que el primer bit no está configurado.
Sin embargo, debido al nombre de la columna: "Atributos", entonces el valor "1" es probablemente solo una bandera que tiene algún significado externo.
Es común usar 1 dígito binario para cada indicador almacenado en un número para los atributos. Entonces, para probar el primer bit, use los atributos sc.Attributes & 1, para probar el segundo use sc.Attributes & 2, para probar el tercero use sc. Atributes & 4, para evaluar el cuarto que usa sc. Atributos & 8, ...
La parte = 0 está probando para ver si el primer bit NO está configurado.
Algunos ejemplos binarios: (== para mostrar el resultado de la operación)
//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
+1 Muy bien explicado. –
@Andrew Hare: Gracias :) –
Gracias. Disculpas por una pregunta tan simple. Realmente aprecio la respuesta excelente y el tiempo empleado. – Jimmymcnulty