Base-phi converter time!
Retina, 81 80 bytes
K`0.
"$+"{+`(1(\.)|(1\.(0?1)*0?)1)(00|$)
${3}0${2}11
0\.
1.
+0`0?1(\.?)1
10${1}0
Try it online! Works by repeatedly adding \$ 1 \$. Explanation:
K`0.
Start off with \$ 0. \$.
"$+"{`
Repeat the number of times given by the input.
+`(1(\.)|(1\.(0?1)*0?)1)(00|$)
${3}0${2}11
If the \$ \phi^0 \$ bit is set, use the identity \$ \phi^0 = \phi^{-1} + \phi^{-2} \$ to move bits away until there is enough room.
0\.
1.
Add \$ 1 \$.
+0`0?1(\.?)1
10${1}0
Minimise the number of bits by reversing the above identity.
dc, 107 106 110 109 bytes
[0sD]sZ0ddsRsK?dsXZF*dkdsN-sM[lX5v1dsD+2/lN^dsY>ZlXlDlY*-sXlDdAlN^*lR+sRlKdlN+lD*-sKlN1-dsNlM!>L]dsLxlRlKk1/p
Try it online!
Or verify the test suite: the OP's test cases, 2147483647, and a very large Lucas number (over 400 trillion) which comes out neatly in base \$\varphi\$ (see screenshot below for that last test case by itself).
The program should now work for arbitrarily large numbers, restricted only by the memory capacity of the computer.
How it works:
[0sD]sZ Macro Z, sets D to 0 when called.
0ddsRsK Initialize R and K to 0, leaving 0 on the stack.
?dsX Input number, store it in X,
ZF*dkdsN store 15 times its number of decimal digits in N,
also set that as the number of decimal places for
computations,
-sM and store the negative of that in M.
M and N are bounds on the powers of phi which
will be needed for the representation.
Multiplying by 15 is far more than is needed:
For M and N, we could have multiplied by just 5,
because ln(10)/ln(phi) < 5.
We need some additional decimal places in the
computations to handle possible round-off errors,
so we conservatively multiply by 15.
[ Start a macro (which will be used as a loop).
lX Push X onto the stack.
5v1dsD+2/lN^ Set D=1. Compute phi^N,
dsY and store it in Y.
>Z If phi^N > X, use macro Z to set D=0.
lXlDlY*-sX If D is 1, set X = X - phi^N.
lDdAlN^*lR+sR R += D * 10^N.
This places the digit D in R in the right
position, treating R as a number in base 10.
lKdlN+lD*-sK If D is 1, set K = -N.
(K is used as the number of "decimal"
places to print.)
lN1-dsN Set N = N-1, leaving the new value of N
at the top of the stack.
lM!>L If M <= N, call macro L recursively (in
other words, start another loop iteration).
] End the macro,
dsL save it in register L,
x and execute it.
Once the loop is done:
lR Load the result R.
lKk Set the precision (number of decimal places) to K.
1/ Divide R by 1 to convert it to the desired precision.
p Print it.
Perl 5, 135 bytes
sub f{(0,1,10.01)[$_=pop]||do{$_=f($_-1);$_.=0until/\..{99}/;s/.\./$&+1/e;1while s/.?2../$&+801/e+s,0?11,100,;s,.{99}$,.$&,;/1.*1/;$&}}
Try it online!
This function is no speed monster, but it's O(n). f(1000000)
returns 10100000100010010000100010001.0001000010100101000100000101
in 15 secs on my laptop.