/ / C Mit bitweisen Operatoren sagen, ob die Binärzahl alle auf 0 gesetzt hat [duplizieren] - c, Logik, Bit-Manipulation

C Mit bitweisen Operatoren sagen Sie, ob die Binärzahl alle auf 0 gesetzt hat [duplizieren] - c, Logik, Bit-Manipulation

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 № 1

Fehle 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.