Arduino: Wie wird hier die Quersumme berechnet?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Setzen wir doch einfach einmal die konkreten Werte ein:

Zahl = 503
Ergebnis = 0

503 > 0:
  Ergebnis = 0 + 503 % 10 = 0 + 3
  Zahl = 503 / 10 = 50;
50 > 0:
  Ergebnis = 3 + 50 % 10 = 0 + 3
  Zahl = 50 / 10 = 5
5 > 0:
  Ergebnis = 3 + 5 % 10 = 5 + 3
  Zahl = 5 / 10 = 0
0 > 0:
  Ende

Interessant bei diesem Algorithmus ist:

1) Zum einen der Modulo-Operator (%). Er berechnet den Rest einer ganzzahligen Division.

Beispiele:

5 % 2 = 2 Rest 1   (2 * 2 + 1)
17 % 10 = 1 Rest 7 (1 * 10 + 7)
3 % 3 = 1 Rest 0   (1 * 3 + 0)

Um die Zahlen voneinander abzuspalten, wird also der Rest berechnet.

123 % 10 = 12 Rest 3

Dann wird mit Hilfe einer normalen Division die Zahl verringert.

123 / 10 = 12

Und wieder aufgespalten:

12 % 10 = 1 Rest 2

So lange, bis die Zahl so klein (<= 0) ist, sodass sie nicht mehr aufgespalten werden kann.

12 / 10 = 1
1 % 10 = 0 Rest 1

Die jeweiligen Restbeträge werden miteinander addiert.

2) Die Tatsache, dass mit Ganzzahlen gerechnet wird.

Normalerweise ergibt:

503 / 10 = 50.3;

Bei einer Division mit Ganzzahlen wird die Nachkommastelle allerdings kommentarlos abgetrennt. Daher ist das Ergebnis der obigen Division 50.

Viel Dank,

ich bin vor deiner Antwort selber auf die Idee gekommen die Werte in Python Shell einzugeben und dort diese manuell nachzurechnen, ähnlich wie du es gemacht hast. Danach ist mir auch alles klar geworden. Ich danke dir dennoch dass du dir die Zeit genommen hast. Im Gegenzug zeichne ich deine Antwort als die hilfreichste aus. :)

0