Guten Morgen,
es ist Sonntagmorgen und meine Liebste schläft quasi auf meinem C-Buch.
Wenn ich zwei Integer-Zahlen, meinetwegen int8_t a,b , habe, haben diese
in ihrem zyklischen Zahlenraum mehrere Abstände, nämlichb z.B.:
diff1 = b-a;
diff2 = b-256*a;
usw.
Das wird immer dann interessant, wenn eine Variable überträgt, bei mir
konkret im folgenden Fall:
1 | int8_t this,last,delta;
|
2 | this = zaehleraehnliche_funktion();
|
3 |
|
4 | while(1) {
|
5 | last = this;
|
6 | this = zaehleraehnliche_funktion();
|
7 | delta = this-last;
|
8 |
|
9 | ...
|
10 | }
|
Im Moment des Übertrags steht in this=-128 und in last = 127, was vom
normalen Differenzoperator völlig richtig als -255 interpretiert wird -
aber der Abstand, den ich wirklich suche ist ja 1. Bei der umgekehrten
Richtung entsteht das gleiche Problem.
Wie geht es am effizientesten, den kürzesten gerichteten Abstand im
Zahlenraum auf einem AVR zu berechnen?
Viele Grüße
Nicolas