我的程序应该将十进制数字转换为二进制。对于大数,它给我一个负数而不是二进制数。为什么是这样?
例如,如果我提供2321
我得到100100010001
,这很好。但如果我提供
241242141
我得到-2127232070093227171
.
我不能使用字符串、数组、函数。还有另一个选项没有将其定义为字符串?输出?
import java.util.Scanner;
public class d {
public static void main(String[] args) {
long num = 0;
long temp = 0L;
Scanner sc = new Scanner(System.in);
num = sc.nextLong();
long place = 1L;
long output = 0;
//System.out.print(""+ num%2+ (num%2)%2);
while(num != 0) {
temp = num % 2;
num = num / 2;
output += (place*temp);
place *=10;
}
System.out.print(""+output);
}
}