十进制转化各种进制 - l00jj/algorithm GitHub Wiki

1017. 负二进制转换

class Solution:
    def baseNeg2(self, n: int) -> str:
        if not n: return "0"
        res = []
        while n:
            remain = n & 1
            res.append(remain)
            n -= remain
            n //= -2
        return "".join(map(str, res[::-1]))
// 就是类似于求二进制的方法,除以-2,取余数,控制余数为1或0就行
class Solution {
    public String baseNeg2(int n) {
        if (n == 0) return "0";
        StringBuilder builder = new StringBuilder();
        while (n != 0) {
            if (Math.abs(n) % 2 == 1) builder.append("1");
            else builder.append("0");
            if (n > 0) n = n / -2;
            else n = (n - 1) / -2;
        }
        return builder.reverse().toString();
    }
}