Noch ein Vorschlag, das Prinzip: Ermittele das höchste gesetzte Bit, allokiere den String und verarbeite die restlichen Bits.
Delphi-Quellcode:
function IntToBin(x: cardinal):
string;
var
i,n: integer;
m: cardinal;
begin
if x=0
then Result := '
0'
else begin
{Teil 1: Bestimme höchstes gesetztes Bit}
m := cardinal($80000000);
n := 32;
while m
and x = 0
do begin
dec(n);
m := m
shr 1;
end;
{Teil 2: Allokieren und Bits abarbeiten, n>0 da x<>0!}
Setlength(Result,n);
for i:=1
to n
do begin
if m
and x <> 0
then Result[i] := '
1'
else Result[i] := '
0';
m := m
shr 1;
end;
end;
end;