XOR- Berechnung um Prüfsumme berechnen zu können

Hallo,

im muss für das senden eines bestimmten seriellen Befehls mehrere Bytes miteinander verXORen und weiss nicht wie ich dies bewerkstelligen soll.

Da ich C++ nicht verstehe, bringen mir die ganzen in C++ ausgeführten Beispiele zu dieser Thematik leider nichts.

Kann mir dies evtl. jmd. erklären, oder auf eine Seite mit Arduinocode verlinken?

Gruß Chris

Der XOR Operator ist ^. Funktioniert analog zu | und &

Hallo,

ich weiß nicht so Recht, was ich antworten soll, wenn Dir C++ nichts bringt. In welcher Sprache willst Du Deine Lösung denn formulieren?

Falls Du es doch mal mit C++ probieren willst:

ergebnis = byte1 ^ byte2;

Gruß,
Ralf

Hm.. angenommen ich habe drei Bytes die verXORt werden sollen..

  1. 11000000
  2. 00000000
  3. 01000000

Ist das korrekte Ergebnis dann..

11000000

..oder..

10000000

?

Danke!

Letzteres.

Hast du Windows? Dann schmeiß mal den Windows Taschenrechner an. Bei Windows 7 auf den Programmier-Modus umschalten.

Auf Papier kannst du erst mal zwei Bytes verrechnen und dann das dritte mit dem Zwischenergebnis. So macht es ja auch der Prozessor.

Man sieht aber auch sofort dass XOR mit 0 nichts macht. 1 XOR 0 = 1 und 0 XOR 0 = 0. Daher hat die zweite Operation keinen Effekt. Bei dritten wird jedes Bit bei dem eine 1 steht invertiert. Also ist 11 XOR 01 = 10. Ddas rechte Bit wird invertiert. Das linke bleibt. Man kann es auch anders herum sehen: 01 XOR 11. Beide Bits invertieren, also wird aus 01 -> 10

Serenifly:
Auf Papier kannst du erst mal zwei Bytes verrechnen und dann das dritte mit dem Zwischenergebnis. So macht es ja auch der Prozessor.

Danke! Das war der alles entscheidende Tipp (für mich).

Gruß Chris