Es gibt zwei Vektoren von unterschiedlicher, aber verwandter Größe. Der größere ist (2 * RESOLUTION) + INDEX_OFFSET
(z.B. 2050) und der kleinere ist einfach RESOLUTION
(z.B. 1024). Ich halte es für sicher genug, anzunehmen, dass uint16_t
kann verwendet werden, um den Vektorindex zu enthalten.
Die Iteration durch den größeren Vektor erfolgt durch Inkrementierung resultIndex
durch 2. Bei jeder Iteration erfolgt eine Zuordnung zum kleineren Vektor mit dem Index (resultIndex - INDEX_OFFSET) / 2
.
Im Wesentlichen beruht der Code auf der Annahme, dass, unabhängig davon, ob INDEX_OFFSET
ungerade oder gerade ist, wird bei der obigen Division durch 2 immer abgerundet, unabhängig von der Architektur. Zum Beispiel, wenn resultIndex
0 oder 1 ist, wird 0 erwartet, wenn es 2 oder 3 ist, wird 1 erwartet, und so weiter. Ist dies eine sichere Annahme im Rahmen der oben genannten Parameter?
N.B. Ich erkenne die Existenz von Dividieren von Integer-Typen - Sind die Ergebnisse vorhersehbar? aber es scheint keine exakte Übereinstimmung zu sein.