【问题描述】
给出1个十进制整数N,计算出它的-2进制表示。
【输入】
第一行:一个整数N,表示要转换的十进制数。
【输出】
第一行:N的-2进制表示。
【输入样例】
-13
【输出样例】
110111
【数据规模】
100%的数据满足:|n|<=2000000000。
提示:
负二进制:
有这样一个数100110,它是-2进制的数,将它转换成10进制数的方法是1*(-2)5 + 0*(-2)4 + 0*(-2)3 + 1*(-2)2 + 1*(-2)1 + 0*(-2)0 等于-30。
110111转换为负二进制数为:1*(-2)5 + 1*(-2)4 + 0*(-2)3 + 1*(-2)2 + 1*(-2)1 + 1*(-2)0 等于-13
在-2进制数中,每个位置上的数字只能是0或1。可以证明,每一个10进制数都可以表示成-2进制数,而且表示方式是唯一的。
import java.util.Scanner;
public class three {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long n = sc.nextInt();
if(n!=0) {
test(n);
}else {
System.out.println((int)0);
}
}
public static void test(Long n) {
int a=0;
int[] arr=new int[100];
while(n!=1) {
if(n%(-2)==0) {
arr[a]=0;
n=n/(-2);
}else{
arr[a]=1;
if(n<0) {
n=n/(-2)+1;
}else {
n=n/-2;
}
}
a++;
}
arr[a]=1;
for(int i=a;i>=0;i--) {
System.out.print(arr[i]);
}
}
}