function BitReverse(n:integer):Integer;
begin
n:=((n shl 1) and $AAAAAAAA) or (((n shr 1) and (not $AAAAAAAA)));
n:=((n shl 2) and $CCCCCCCC) or (((n shr 2) and (not $CCCCCCCC)));
n:=((n shl 4) and $F0F0F0F0) or (((n shr 4) and (not $F0F0F0F0)));
n:=((n shl 8) and $FF00FF00) or (((n shr 8) and (not $FF00FF00)));
n:=((n shl 16) and $FFFF0000) or (((n shr 16) and (not $FFFF0000)));
Result:=n;
end;