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....
Ist doch egal, wobei letzteres wegen nur eines Funktionsaufrufs schneller sein sollte - vorausgesetzt "^" soll der XOR Operator sein ;-)
Ja eh :-) Danke gehirn mit hochdosiertem Koffein wieder aufgetaut :-)
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.