你的二进制转换只能转换正正数,出现负数就有问题了呗
我给你改下~~
具体思想是,负数取绝对值取反后加1,就是它的二进制啦~
public class test{
public static void main(String[] args) {
StringBuffer sbf = toBin(6);
String str = sbf.reverse().toString();
System.out.println(str);
sbf = toBin(-6);
str = sbf.reverse().toString();
System.out.println(str);
}
static StringBuffer toBin(int num) {//目前只考虑int型整数,带小数的暂不考虑
StringBuffer result = new StringBuffer();
int n = 0;
if(num>=0){ //先判断要转换的数是不是正整数
n = num;
do {
result.append(n % 2);
n /= 2;
} while (n > 0);
}
else{ //负数就先取绝对值然后取反后再加1,然后再转换成2进制
n=(num*-1^255)+1; //这里的运算顺序是num*负1然后再^255,不了解的话可以去百度下运算符优先级
do {
result.append(n % 2);
n /= 2;
} while (n > 0);