Re: Timerüberlauf Kategorie: Programmierung (von nitram - 30.06.2009 21:16) | ||
Als Antwort auf Re: Timerüberlauf von reneforster - 30.06.2009 15:01 | ||
| ||
> > Nicht nur der Timer läuft über, sondern jede Variable. > > somit wird aus 2147483647+1 immer -2147483648 , egal, ob timer oder normale Long-Variable. > > Timervergleiche werden in der Programmierung eigentlich schon immer auf diese Weise gemacht, > > da diese immer funzen. > > Vieleicht lässt sich das am einfachsten mit der Hex-Schreibweise verdeiutlichen: > > 0x00000000 bis 0x7FFFFFFF sind die Werte von 0 bis 2147483647 > > 0x80000000 bis 0xFFFFFFFF sind die Werte von -2147483648 bis -1 > > Addierst Du nun bei 0x7FFFFFFF eins dazu, erhäst Du 0x80000000, also -2147483648. > > Addierst Du bei 0xFFFFFFFF (=-1) ein dazu erhälst Du 0. > > Der eigentliche �berlauf findet also von -1 zu 0 statt. > > Bei der Subtraktion verhält sich das ganze genauso. > > > > Wenn Du jetzt system.timer()-timer rechnest, und timer den Wert 2147483000 hat > > und der System-timer bei -214748250 steht, wird also > > -2147482500 - 2147483000 gerechnet. > > Hier kommt es bei der Berechnung zu einem "�berlauf": > > 0x8000047C - 0x7FFFFD78 > > Wie Du siehst aber nicht wirklich. :-) > > Das Ergebis wäre hier 1796 (0x704). > > Ineressant wäre eher der Timerbereich von z.B. -100 zu +50. > > system.timer() - timer: > > 0x00000032 - 0xFFFFFF9C > > Hier findet ein echter �berlauf bei der Berechnung statt. > > Das Ergebis ist aber dennoch +150 > > > > Ja dann klinke ich mich mal hier ein und sage Danke für die Erklärung. Habe meine Lösung gerade > ausgebessert. > > > Rene Die Worte stammen vom Meister (André) persöhnlich habe sie auch nur aus meiner Sammlung von Lösungen kopiert... nitraM | ||
Antwort schreiben Antworten: |