&è l'operatore logico e bit per bit:esegue l'operazione su 2 valori interi.
WHERE (sc.Attributes & 1) = 0
Il codice precedente verifica se sc.Attributes è un numero pari. Che equivale a dire che il primo bit non è impostato.
Tuttavia, a causa del nome della colonna:"Attributi", il valore "1" è probabilmente solo un flag che ha un significato esterno.
È comune utilizzare 1 cifra binaria per ogni flag memorizzato in un numero per gli attributi. Quindi per testare il primo bit usi sc.Attributes&1, per testare il secondo usi sc.Attributes&2, per testare il terzo usi sc.Attributes&4, per testare il quarto usi sc.Attributes&8, ...
La parte =0 sta verificando se il primo bit NON è impostato.
Alcuni esempi binari:(==per mostrare il risultato dell'operazione)
//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