2&1@0&2&0&3&
//**[][][][]
1&2&2&++1&/\
>>>>%% --
\/1&1& 0&
[] >>
**
Attempt This Online!
Explanation
Programs in Quipu consist of several "threads," vertical strips of code that are executed one at a time and also store values. Quipu is missing a lot of features that would have been useful for this challenge: lists, string concatenation, exponentiation... Lacking better methods, we generate the output as a base-10 number whose digits are either 0 or 1.
The first time thread 0 is executed, it loads the input number; subsequently, it divides its value by 2:
# Previous value of this thread (implicit; initially 0)
2& # Push 2
// # Divide
1& # Push 1
>> # Go to that thread if the above result is greater than 0
\/ # Otherwise, read input number
Thread 1 generates successive powers of 10, starting at 1:
# Previous value of this thread
1@ # Push 10
** # Multiply
2& # Push 2
>> # Go to that thread if the above result is greater than 0
1& # Otherwise, push 1
Thread 2 takes the current value mod 2 and multiplies by the appropriate power of 10:
0& # Push 0
[] # Load that thread's value
2& # Push 2
%% # Mod
1& # Push 1
[] # Load that thread's value
** # Multiply
Thread 3 keeps a running sum of the values generated by thread 2. This will be our output number.
# Previous value of this thread
2& # Push 2
[] # Load that thread's value
++ # Add
Thread 4 tests if the value in thread 0 is still greater than 1; if so, jump back to thread 0:
0& # Push 0
[] # Load that thread's value
1& # Push 1
-- # Subtract
0& # Push 0
>> # Go to that thread if the above result is greater than 0
Once thread 0's value has reached 1 (or 0), execution continues with thread 5, which simply outputs the final result:
3& # Push 3
[] # Load that thread's value
/\ # Print