负二进制转换
LeetCode1017
Questin:给出数字 N
,返回由若干 "0"
和 "1"
组成的字符串,该字符串为 N
的负二进制(base -2
)表示。
示例 1:
输入:2 输出:"110" 解释:(-2) ^ 2 + (-2) ^ 1 = 2
示例 2:
输入:3 输出:"111" 解释:(-2) ^ 2 + (-2) ^ 1 + (-2) ^ 0 = 3
示例 3:
输入:4 输出:"100" 解释:(-2) ^ 2 = 4
和正常二进制数的计算一样,只不过二进制计算的时候是向下取整,负二进制是向上取整。
以6为例 二进制计算
6/2=3 余数 0
3/2=1 余数 1 (向下取整所以3/2=1)
1 余数 1 结果为 110;
负二进制计算
6/-2=-3 余数 0
-3/-2=2 余数 1(向上取整-3/-2=2)
2/-2=-1 余数 0
-1/-2=1 余数 1
1 余数 1 结果为 11010
以上分析完成后开始java代码。
代码地址 https://github.com/18306298951/Leetcode/blob/master/P1017