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.
Das bDummy ist nötig, damit lDurchschnitt als 4. Byte (MSB) immer einen definierten 0-Wert hat.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
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.
Da eine Division vergleichsweise eine zeitaufwendige Berechnung ist, lässt sich mit diesen beiden Methoden besonders in zeitkritischen Applikationen Rechenzeit sparen.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







Zitieren

Lesezeichen