我是 Java 初学者,正在学习将一种数字系统转换为另一种数字系统。在转换时,我发现最后出现在1后面的数字“0”(零)并没有被分配给二进制数。
当我将63个十进制数字转换为二进制时,结果是111111;这是正确的,这里没有出现问题,因为结果二进制值不包含任何零。
当十进制数为 42 时,结果是 10101,本来应该是 101010,即最后 1 后面的“0”没有被分配。
当我将十进制数字 64 转换为二进制时,本来应该显示 1000000 的结果变成了 1,即 1 后的所有“0”(零)丢失了。
此代码是否意味着最后出现在 1 之后的零无关紧要,或者还有其他问题吗?
class DecToBin{
public static void main(String[] args){
int dec = 64;
int bin=0,rem=0;
while(dec!=0){
rem=dec%2;
bin=bin*10+rem;
dec=dec/2;
}
System.out.println("In Binary = "+bin);
}
}
最佳答案
问题是你添加了 0 并且没有真正构建正确的数字,你可以使用 String 来存储数字,最好使用 StringBuilder 并这样做:
public static void main(String[] args) {
int dec = 64;
StringBuilder sb = new StringBuilder();
int rem = 0;
while (dec != 0) {
rem = dec % 2;
sb.insert(0,rem);
dec = dec / 2;
}
System.out.println("In Binary = " + sb.toString());
}
但是您可以使用Integer.toString(int i, int radix)
。您想要做的事情已经存在于 Java 中:
public static void main(String[] args) {
int dec = 64;
System.out.println("In Binary = " + Integer.toString(dec,2));
}
关于java - 最后出现在 1 之后的数字 '0' 在从十进制数转换时会丢失在二进制数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52779200/