Mögliche Duplikate:
Finde heraus, ob jedes gerade Bit mit bitweisen Operatoren auf 0 gesetzt ist
Das andere Beispiel hat meine Frage nicht wirklich beantwortet, also ist hier die Situation:
Ich muss 1 zurückgeben, wenn alle Gleichungen in der Bitfolge auf 0 gesetzt sind und andernfalls 0 ergeben. -Ich kann keine bedingten Anweisungen verwenden!
Also ich habe eine Nummer 0x7f (01111111)
Ich kann und durch eine Maske von 0xAA (10101010)
das gibt mir: 00101010
Ich brauche nur eine 0 oder 1, also ich !! (00101010) und das gibt mir den booleschen Wert, aber es gibt eine 1 zurück, aber ich brauche eine 0, damit ich sie negieren oder eine andere Maske verwenden kann.
Ich laufe im Kreis damit und es treibt mich verrückt bitte helfe und erinnere dich an keine bedingten Aussagen nur dieser Operatoren:
! ~ & ^ | + << >>
Antworten:
0 für die Antwort № 1Fehle ich etwas? Du kriegst 00101010
Daher sind nicht alle even 0. In diesem Fall sollten Sie 0 zurückgeben, aber Sie !!
(zweimal negiere) das Ergebnis. Warum das? Der Wert ungleich Null wird zu false negiert, was dann zu true negiert wird, was 1 ist ... Genau das Gegenteil von dem, was Sie brauchen ...
Andersherum: mit 0x15 (00010101) sind alle even 0, AND mit 0xAA ergibt 0, negiert ergibt true, wieder negiert ergibt false, result ist 0 ...
0 für die Antwort № 2
(~ (2 ^ 1 & IhreNummer)) & (~ (2 ^ 3 & IhreNummer)),usw. den ganzen Weg nach unten würde funktionieren. Nicht sicher, ob es der schnellste Weg ist (~ (2 ^ 1 & IhreNummer)) & (~ (2 ^ 3 & IhreNummer)), usw. den ganzen Weg nach unten funktioniert. Nicht sicher, ob es der schnellste Weg ist - und Sie könnten eine Funktion machen, um durchzulaufen und es für eine konfigurierbare Anzahl von Bits weiterlaufen zu lassen.