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]