@jens:
Die zusätzliche == 0|1 ist für die Register unsinnig, da Du ja hoffentlich mit den Registern nur boolsche Operationen machst. Dann ist doch egal, was konkret in der Variable drinsteckt, solange das wahr/falsch korrekt abgebildet wird. (Ich hätt da wahrscheinlich von Anfang an mit True/False gearbeitet.)
Bei dem nach `and` umgestellten Ausdruck würde ich die Z-Prüfung noch nach links nehmen. Die Testung auf 0 ist idR schneller, kA ob das bei Python auch eine Rolle spielt, trotzdem dürfte die Prüfung schneller sein als das (N==V) wegen 1 vs. 2 Variablenlookups.