Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
7.894 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: ungerade und gerade Zahlen erkennen

  Alt 24. Mai 2019, 11:35
Odd ist allerdings immer noch die schnellste Option.

Bei Odd gibt es lediglich einen TEST call auf das Lo-Byte und einen bedingten Sprung:
Code:
Project543.dpr.9: if Odd(N) then
0040A10A F60588F5400001   test byte ptr [$0040f588],$01
0040A111 741B            jz $0040a12e
während der Weg über mod schon ein paar mehr CPU-Befehle braucht:
Code:
Project543.dpr.13: if N mod 2 = 0 then
0040A147 A188F54000       mov eax,[$0040f588]
0040A14C 2501000080       and eax,$80000001
0040A151 7905             jns $0040a158
0040A153 48               dec eax
0040A154 83C8FE          or eax,-$02
0040A157 40               inc eax
0040A158 85C0             test eax,eax
0040A15A 751B            jnz $0040a177
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat