RosettaCodeData/Task/Binary-digits/Pascal/binary-digits-1.pas

30 lines
619 B
ObjectPascal

program IntToBinTest;
{$MODE objFPC}
uses
strutils;//IntToBin
function WholeIntToBin(n: NativeUInt):string;
var
digits: NativeInt;
begin
// BSR?Word -> index of highest set bit but 0 -> 255 ==-1 )
IF n <> 0 then
Begin
{$ifdef CPU64}
digits:= BSRQWord(NativeInt(n))+1;
{$ELSE}
digits:= BSRDWord(NativeInt(n))+1;
{$ENDIF}
WholeIntToBin := IntToBin(NativeInt(n),digits);
end
else
WholeIntToBin:='0';
end;
procedure IntBinTest(n: NativeUint);
Begin
writeln(n:12,' ',WholeIntToBin(n));
end;
BEGIN
IntBinTest(5);IntBinTest(50);IntBinTest(5000);
IntBinTest(0);IntBinTest(NativeUint(-1));
end.