Python solution backed by math, works for any base, not just -2
MathFor any baseb, a number...d3​d2​d1​d0​is by definitiond0​b0+d1​b1+d2​b2+d3​b3+...=d0​+d1​b1+d2​b2+d3​b3+...=d0​+b(d1​+d2​b1+d3​b2+...)=d0​+b(d1​+b(d2​+d3​b1
# Math

For any base $$b$$, a number $$...d_3 d_2 d_1 d_0$$ is by definition

$$
d_0 b^0 + d_1 b^1 + d_2 b^2 + d_3 b^3 + ... \\
= d_0 + d_1 b^1 + d_2 b^2 + d_3 b^3 + ... \\
= d_0 + b (d_1 + d_2 b^1 + d_3 b^2 + ...) \\
= d_0 + b (d_1 + b (d_2 + d_3 b^1 + ...)) \\
= ...
$$

So if you split a number into the part that's divisable by $$b$$ and the remainder, the remainder will be the lowest digit; then take the $$b$$-divisable part and divide by $$b$$, it can be further split to get higher digits.

# Code
```python3 []
BASE = -2
SYMBOLS = ['0', '1']

class Solution:
    def baseNeg2(self, n: int) -> str:
        digits = []
        while True:
            symbols = iter(SYMBOLS)
            digit = next(symbols)
            while n % BASE:
                digit = next(symbols)
                n -= 1
            digits.append(digit)
            n = n // BASE
            if n == 0: break
        return ''.join(digits[::-1])
```
['Python3']