如何将数字转换成二进制表示呢?
第一次尝试:
我:二进制嘛,还不简单。对2取余一顿操作不就好了。于是代码如下:
/**
* 二进制转换
*
* @param n
* @return
*/
private String parse(int n) {
// n对2取余,若为1,则n-1除以2;若为0,则直接除以2,所得的数字重复这个步骤
String result = "";
while (n != 0) {
if (n % 2 == 1) {
n = (n - 1) / 2;
result += "1";
} else {
n = n / 2;
result += "0";
}
}
StringBuilder str = new StringBuilder(result);
return str.reverse().toString();
}
测试下来,没什么问题,很开心嘿嘿嘿。
然鹅
测试到负数的时候我开始懵了。看来事情并没有想象中这么简单啊。
负数的二进制表示需要先求绝对值的二进制,然后取其反码再加1。于是有了第二次尝试,代码如下:
/**
* 二进制转换
*
* @param n
* @return
*/
public String parse(int n) {
String result = "";
if(n > 0) {
//正数
result = positive(n);
} else