0~1之间的实数(double)转换为二进制 *2
整数转换为二进制 /2
*2算小数的二进制
/2算整数的二进制
Scanner sc=new Scanner(System.in);
Double N = sc.nextDouble();
StringBuilder sb=new StringBuilder("0.");
while(N!=0) {
N*=2;
if(N>=1) {
sb.append("1");
N-=1;
}else {
sb.append("0");
}
if(sb.length()>=34) {
System.out.println("error");
break;
}
}
System.out.println(sb);
不进位加法
两个相同的二进制数 做不进位加法 结果为零
十个相同的十进制数 做不进位加法 结果为零
K个相同的K进制数 做不进位加法 结果为零
当遇到只有一个数为一个 其余数均为k个时
可以将数据转换为k进制数 做不进位加法
结果即为孤独的数
Integer.toString(i.radix);//通过该API将十进制整数转换为radix进制
int[] arr= {2,2,2,9,7,7,7,3,3,3,6,6,6,0,0,0};
int len=arr.length;
char[][] kRadix=new char[len][];
int k=3;
int maxlen=0;
//转换成k进制字符数组
//对于每个数字
for (int i = 0; i <len; i++) {
kRadix[i] = new StringBuilder(Integer.toString(arr[i],k)).reverse().toString().toCharArray();
if(maxlen<kRadix[i].length) {
maxlen=kRadix[i].length;
}
}
int[] res=new int[maxlen+1];
for (int i = 0; i < len; i++) {
for (int j = 0; j < kRadix[i].length; j++) {
res[j]+=(kRadix[i][j]-'0');
}
}
System.out.println(Arrays.toString(res));
for (int i = 0; i < res.length-1; i++) {
while(res[i]/3>0) {
res[i+1]+=res[i]/3;
res[i]=res[i]%3;
}
}
System.out.println(Arrays.toString(res));
int re=0;
for (int i = 0; i < res.length-1; i++) {
re+=res[i]*Math.pow(k, i);
}
System.out.println(re);