Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#1

shr für Signed Typen (Integer) in Delphi 7

  Alt 7. Mär 2006, 09:39
Hallo,

für alle die sich auch mit SHR rumärgern und sich wundern das falsche Ergebnisse kommen hier eine Funktion die SHR mit vorzeichenbehafteten typen richtig durchführt:
Delphi-Quellcode:
//Ersatz für shr weil shr nur für Unsigned funktioniert
function SSHR(AInt: Integer; ACnt: Byte): Integer; assembler;
asm
  mov cl, dl
  sar eax, cl
end;
Grund ist ganz einfach. Delphi erzeugt bei der Verwendung von "shr" assembler-Code mit der Anweisung "shr", für signed-Typen muss aber "sar" verwendet werden.

shr = logisches Shiften
sar = arithmetisches Shiften

[edit=Chakotay1308]Beitrags-Titel und -Klassifizierung angepasst. Mfg, Chakotay1308[/edit]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat