Hallo, würde gerne einen 4 Bit Gray Code in einen Binär Code umwandeln. Ich habe den Code über eine Gray-Code Scheibe in meinen Controler eingelesen und in einer 8 Bit Char Variable abgespeichert. Die oberen 4 Bit habe ich ausmaskiert und würde nun gerne die 4 Bit Gray über einen Algorythmus in 4 Bit binär umwandeln. Kann mir vielleicht jamand helfen? Vielen Dank im Voraus. Gruß, DAni
Hallo, ich würde die umwandlung gerne mit einem allgorythmus machen. Ich könnte den binärwert auch über einen swich case zuweisen das will ich aber nicht. das habe ich gefunden: Binärcode X1 --> Graycode: X4 = ((X1*2) XOR X1) / 2 ich muss das wahrscheinlich nach x1 auflösen. hab aber hier auch schon probleme. oder gibts vielleicht auch was einfacheres?
Mal dir dochmal nebeneinander deinen 4-Bit Binärcode und den Graycode auf. Vielleicht kann man da schon alles erkennen.
Nimm doch einfach nen Lookup-Table. Bei 4 Bit sind das nur 16 Einträge. Also 16 Byte belegter Flash-Speicher. Effizienter gehts wahrscheinlich nicht.
1 | unsigned char gray2bin[16] = { ... } |
Dekodierung geht dann einfach über
1 | binaer = gray2bin[gray] |
. MfG Marius
Hi, Here the a 32 Bit and a 4 Bit variant. The 4 Bit variant needs only one CPU cycle more than a table based approach. Jochen static uint32_t GrayDecodeU32(uint32_t to_decode) { uint32_t result = to_decode ^ (to_decode >> 16); result ^= result >> 8; result ^= result >> 4; result ^= result >> 2; result ^= result >> 1; return result; } uint8_t GrayDecodeU4(uint8_t t) { t = t ^ (t >> 2); return t ^ (t >> 1); }
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.