Ich versuche herauszufinden, warum in der folgenden Methode der letzte Wert im Array "8" die where-Klausel von "(8 & 7) == 0" erfüllen würde.
public class Test {
public static void Main() {
int[] Arr = {-3, -1, 0, 1, 3, 8};
var s = from x in Arr where (x & (x-1)) == 0 select x+1;
foreach (int x in s)
Console.Write(x + " ");
}
}
Es ist in einem Einstellungstest enthaltenfür das Leben von mir kann ich nicht herausfinden, warum dieser Wert ausgewählt wird. So oder so werde ich ihn bei meinen Tests nicht verwenden, aber ich bin neugierig, da ich noch nie zuvor darauf gestoßen bin.
Antworten:
2 für die Antwort № 1Also eine Single &
ist ein bitweiser Operator. Es geht um die Binärdarstellung dieser Zahlen.
7 = 0111 und 8 = 1000
Wenn Sie sie kombinieren, erhalten Sie 0.
Deshalb gibt Ihre Methode eine 9 aus.