& is the bitwise logical and operator - İşlemi 2 tamsayı değerleri üzerinde gerçekleştirir.
WHERE (sc.Attributes & 1) = 0
Yukarıdaki kod, sc.Attributes çift sayı olup olmadığını kontrol eder. İlk bitin belirlenmediğini söylemekle aynı şey.
"Nitelikler" sütununun adından dolayı "1" değeri muhtemelen yalnızca dışsal bir anlamı olan bir bayraktır.
Nitelikler için bir numarada depolanan her bayrak için 1 ikili basamağın kullanılması yaygındır. Bu nedenle, sc.Attributes & 2, sc.Attributes & 2, sc.Attributes & 2, sc.Attributes kullandığınız üçüncü için sınamak için d. Öznitelikleri & 8, ...
= 0 bölümü, ilk bitin OLMADIĞINI sınamak için sınanıyor.
Bazı ikili örnekler
: (== operasyonun sonucunu göstermek için)
//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 Çok güzel açıkladı. –
@Andrew Hare: Teşekkürler :) –
Teşekkürler. Böyle basit bir soru için özür dilerim. Mükemmel cevap ve zamanı gerçekten takdir edin. – Jimmymcnulty