Dein BitAtPos liefert einen Integer zurück.
Delphi-Quellcode:
b[(Int and BitAtPos(i)) <> 0]
^^
Alternativ wäre es mit einem Cardinal so auch
korrekt funktional.
Zitat:
Das Vorzeichen wird meiner Kenntnis nach mit einem Bit gegenzeichnet
Jain, aber im Prinzip kann man an dem Bit zumindestens erkennen, ob es negativ ist.
https://de.wikipedia.org/wiki/Zweierkomplement
Delphi-Quellcode:
function BitAtPos(BitPos: Byte): Integer;
begin
Result := $1 shl BitPos;
end;
//Liefert einen Binär-String aus 0 und 1 im Wert von Integer zurück.
function IntToBinStr(Int: Integer): string;
const
b: array[Boolean] of Char = ('0', '1');
var
i: Integer;
begin
Result := '';
for i := 0 to SizeOf(Int) * 8 - 1 do
Result := b[Int and ($1 shl i) <> 0] + Result;
end;
Delphi-Quellcode:
function IntToBinStr(Int: Integer): string;
const
b: array[Boolean] of Char = ('0', '1');
var
i: Integer;
begin
Result := '';
for i := 0 to SizeOf(Int) * 8 - 1 do
Result := b[Odd(Int shr i)] + Result;
end;
Delphi-Quellcode:
function IntToBinStr(Int: Integer): string;
const
b: array[Boolean] of Char = ('0', '1');
var
i: Integer;
begin
SetLength(Result, SizeOf(Int) * 8);
for i := 0 to SizeOf(Int) * 8 - 1 do
Result[i + Low(string)] := b[Odd(Int shr i)];
end;
Über Int als Bezeichner könnte man noch streiten, denn
Int.