Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
Delphi 12 Athens
|
Re: "Variablenübergreifende" Bitverschiebungen
14. Mai 2009, 10:39
Funktioniert für count = 0..7:
Delphi-Quellcode:
function Rol( const AValue, ACount: Byte): Byte register;
asm
mov cl, dl
rol al, cl
end;
function ArrayShl(arr: TByteArray; count: integer): TByteArray;
var
mask0, mask1, b0, b1: Byte;
begin
Result := Copy(arr);
mask0 := $FF shl Count;
mask1 := mask0 xor $FF;
b1 := 0;
for i := High(Result) downto 0 do
begin
b0 := rol(Result[i], count);
Result[i] := (b0 and mask0) or (b1 and mask1);
b1 := b0;
end;
end;
|
|
Zitat
|