1017. Convert to Base -2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public String baseNeg2(int n) {
if (n == 0) {
return "0";
}

StringBuilder sb = new StringBuilder();
while (n != 0) {
int x = n % (-2);
n /= (-2);
if (x == -1) {
// 注意 Java 取余结果的符号与第一个操作数的符号相同,(-1) % (-2) = (-1)
// 调整前:-1 = (-2) * 0 + (-1)
// 调整后:-1 = (-2) * 1 + 1
x = 1; // 此处将余数从 -1 调整为 1 等于减去了 -2,所以下面的商要增加 1 个 -2
n++;
}
sb.append(x);
}

return sb.reverse().toString();
}
}

References

1017. Convert to Base -2
Java: Remainder (modulo) operator with negative numbers