30 lines
619 B
ObjectPascal
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.
|