Output quater-imaginary base numbers in binary
JavaScript (ES6), 340 bytes

f=x=&gt;[0,...x.toString(16)].reverse().map(d=&gt;s=d&lt;'.'?s:d&lt;`0`?d+s.slice(0,-1):`${(c=+`0x${d}`+(c&gt;&gt;4)+m^m)&gt;&gt;2&amp;3}${c&amp;3}`+s,c=s='.',m=x&lt;0?3:12)&amp;&amp;s
g=(s,t,n=s.indexOf`.`,m=t.indexOf`.`)=&gt;n&lt;m?g(0+s,t):n&gt;m?g(s,0+t):t[s.length]?g(s+0,t):s.replace(/\d/g,(c,i)=&gt;`${t[i]&gt;&gt;1}${t[i]&amp;1}${c&gt;&gt;1}${c&amp;1}`).replace(/^0+(\d)|\.?0*$/g,'$1')
(r,i)=&gt;g(f(r),f(i/2))


f converts a number into base -4 (with trailing . if the number is an integer). g takes two base -4 numbers, pads them at both ends to the same length and . position, shuffles the digits together, converts everything from base 4 to base 2, then finally strips leading and trailing zeros.

Explanation: To represent the given complex number in modified-base 2i we need to represent the real part and half of the complex part (i.e. dividing the imaginary part by 2i) in base 2i² (i.e. -4), shuffle the digits together, and then convert them from base 4 to base 2. To represent a real number in base -4 we start with the base 4 conversion. Alternate digits have the correct sign (in the case of a positive number, these are the digits in the even positions; in the case of a negative number, these are the digits in the odd positions) but the remaining digits have the wrong sign and a correction needs to be applied. Examples:

 0 -&gt; 000 -&gt; 000 (no correction needed)
 4 -&gt; 010 -&gt; 130 }
 8 -&gt; 020 -&gt; 120 } (correction includes carry)
12 -&gt; 030 -&gt; 110 }


As you can see, the correction is 8 minus the original digit, mod 8. However a slightly more convenient calculation is the original digit, plus 3, xor 3 (indeed in 32-bit integer arithmetic we could simply write +0xCCCCCCCC^0xCCCCCCCC to convert the entire number in one go). Finally as the correction applies to alternate digits it is simpler to do an initial conversion to base 16 which automatically picks up pairs of base 4 digits, then correct using a factor of either 3 or 0xC as appropriate. It just remains to ignore the - sign.