Équivalent en Delphi de la fonction SAR

Pour des besoins de portabilité de code pour Firemonkey, j’ai eu besoin de transcrire la fonction assembleur Intel SAR en son équivalent en Pascal / Delphi.

Elle fonctionne aussi avec la VCL.

Vous trouverez un exemple de son utilisation dans les programmes Texture et FT3D.

Voici la fonction sous Delphi / FMX qui donne les même résultat en sortie que la fonction SAR :

function Sar(const AValue: integer; const AShift: Byte): Integer;
begin
  if AValue < 0 then
    Result := not (not AValue shr AShift)
  else
    Result := AValue shr AShift;
end;

Laisser un commentaire