Tickcount und der Integerüberlauf
-
Hallo,
über folgendes Phänomen bin ich jetzt schon in unterschiedlichem Quellcode in unterschiedlichen Firmen/Projekten gestolpert.
Um einen Zeitabstand zu ermitteln wird oft ein Tickcount verwendet, der meist einen Überlauf bei 32 bit hat.
Dieser wird dann so behandelt:u32 GetDeltaTicks() { if(newTicks < oldTicks) { überlaufkorrektur } else { return newTicks - oldTicks; } }
Wozu gibt es die gesonderte Betrachtung im Fall des Überlaufs (newTicks < oldTicks).
Wenn ich als Zahlenbeispiel habe:
oldTicks = 0xffff fff0
newTicks = 0x64 (100)und dann einfach newTicks - oldTicks habe ich ja den überlauf, aber bei einer 32 Bit Rechenoperation kommt trotzdem das korrekte Delta heraus (116). Es gibt hier ja auch keine Saturation, die das korrekte Ergebnis verhindern könnte. Warum wird also der Überlauf gesondert betrachtet? Gibt es da potenzielle Probleme?
-
Nein. Noobs machen das if da.