Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#13

AW: Schnelle Alternativen für Multiplikation mit 2

  Alt 17. Jan 2012, 12:18
Wie gesagt, mit SHL muß man aufpassen, da es keinen Pascal-Befehl für ein "signed shift" gibt. (k.A. warum)
Nein, shl ist unproblematisch, da sowohl bei shiften als auch bei der Multiplakation die hochsten Bits im Nirvana landen und die Ergebnisse gleich sind (wenn die Checks ausgeschaltet sind).

Problematisch ist shr, da hier offensichtlich auch bei signed Typen der Assemblerbefehl SHR und nicht SAR benutzt wird:
Delphi-Quellcode:
var
  x,y: longint;
begin
  x := -10;
  y := x shr 1;
  writeln(y);
  y := x div 2;
  writeln(y);
end.
Die Ergebnisse sind 2147483643 und -5. Aber selbst SAR ist noch nicht äquivalent zu div, da zwar -10 SAR 1 = -5 ist aber -1 SAR 1 = -1 und -1 div 2 = 0.
  Mit Zitat antworten Zitat