Ich habe die Aufsummierung einer Long-Variable und Division durch 256 getestet und keinen Fehler gefunden.
Da müsste man eventuell Deinen verwendeten Code sehen, um hier weiterhelfen zu können.
In Deinem Fall, wo Du 256 Einzelwerte für die Durchschnittberechnung benutzt, kann der Mittelwert sogar ohne Division ermittelt werden.
Eine Division durch 256 ist eine Verschiebung der 4 Einzelbytes um jeweils 1 Position nach rechts. Das heißt der Durchschnittswert sind die Bytes 2, 3 und 4 der Long-Variable und einer 0 als neues Most-Significant Byte.
Dieser Fall kann mit einem OVERLAY gelöst werden.
Code:
Dim lSumme as Long
Dim bDummy as Byte
Dim lDurchschnitt as Long at lSumme + 1 overlay
Dim lEinzel as Long
lSumme = 0
for lEinzel = 15000 to 15255
lSumme = lSumme + lEinzel
next
print lDurchschnitt
Das bDummy ist nötig, damit lDurchschnitt als 4. Byte (MSB) immer einen definierten 0-Wert hat.
Wenn die Anzahl der Einzelmessungen für den Durchschnittwert eine 2-er Potenz ist, also 2, 4, 8, 16, 32, 64 ..... dann kann mit einem SHIFT RIGHT die Division ersetzt werden. Hier ein Beispiel mit 64 Einzelmessungen.
Code:
Dim lEinzel as Long
Dim lSumme as Long
Dim lDurchschnitt as Long
lSumme = 0
For lEinzel = 15000 to 15063
lSumme = lSumme + lEinzel
next
Shift lSumme, RIGHT, 6
lDurchschnitt = lSumme
Print lDurchschnitt
Da eine Division vergleichsweise eine zeitaufwendige Berechnung ist, lässt sich mit diesen beiden Methoden besonders in zeitkritischen Applikationen Rechenzeit sparen.
Lesezeichen