Forum: Mikrocontroller und Digitale Elektronik Denkblockade: parity von zwei Werten?


von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Hallo,

mein Hirn ist grad blockiert:

AVR, ich hab zwei Werte (x: 4 bit und y: 3 Bit) und ein bit parity (ich 
nenns mal z). Das muss ich prüfen.

parity_even_bit(x) liefert mir parity von x
parity_even_bit(y) liefert mir parity von y

if (z == parity_even_bit(x) ^ parity_even_bit(y)) ???

oder

if (z == parity_even_bit(x ^ y)) ???

grummel manchmal bin ich zu blöd für die einfachsten Dinge....

von O.P. (Gast)


Lesenswert?

Ist doch egal, wobei letzteres wegen nur eines Funktionsaufrufs 
schneller sein sollte - vorausgesetzt "^" soll der XOR Operator sein ;-)

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Ja eh :-) Danke

gehirn mit hochdosiertem Koffein wieder aufgetaut :-)

von Axel S. (a-za-z0-9)


Lesenswert?

einfacher:

ich nehme an parity_even_bit() liefert das Parity-Bit für gerade 
Parität, ist also 0 für ein Argument mit gerader Parität und 1 für ein 
Argument mit ungerader Parität.

Dann wird
1
parity_even_bit(x) == parity_even_bit(y)

zu true wenn die Verkettung von x und y gerade Parität hat. Denn 
dafür müssen x und y entweder beide gerade oder beide ungerade sein.

Das Paritybit (für gerade Parität) für die Verkettung von x und y ist 
dann das Inverse davon:
1
parity_even_bit(x) != parity_even_bit(y)


XL

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

nicht wirklich einfacher: ich hab (ich gestehe, ich hab das 
verschwiegen) nicht nur zwei Werte, sondern 3 bzw. 4.

aber ich denke parity_even_bit(a ^ b ^ c) tut was ich will. Zumindest 
sagt mein programm nix gegenteiliges.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.