2012-04-14 9 views
0

Ich habe drei Eingänge: a, b und c. Wenn mein Ausgang 1 ist, dann gibt es eine ungerade Anzahl von Eingängen mit 1. Ansonsten ist es 0.HCL drei Eingänge ungerade Parität

Ich habe bisher versucht (a && b && c) || (!a && !b && !c), (a && b && c) || (!a && b && c), (a && c) || (b&& !c) und etliche andere. Wie kann ich das machen?

+0

Meinst du zu sagen, "a", "b" und "c" sind alle entweder "0" oder "1": Wenn eine ungerade Anzahl von ihnen "1" ist, sollte der Ausgang "1" sein sonst sollte der Ausgang "0" sein? – huon

+0

ja a, b, c alle sind entweder 0 oder 1. – Raj

Antwort

1

Wie wäre es mit a^b^c?

Wenn nur die grundlegenden logischen Operatoren erlaubt sind, können Sie diese verwenden

((a && b || !c) || (!a && !b || !c)) && (!a || !b || c) && (a || b || c) 

als dbaupp kommentierte nur äquivalente Transformation.

+0

Das abschließende '& 1' ist redundant. Jede Eingabe ist nur eine Null oder Eins, und der XOR-Operator gibt entweder eine Null oder Eins zurück. (+1 für Richtigkeit und Kürze.) – wallyk

+0

Sie haben Recht. Aber mit '& 1' ist es generischer. –

+0

oh vergessen zu erwähnen, dass ich nur &&, || verwenden soll und ! Betreiber. – Raj