java - 最后出现在 1 之后的数字 '0' 在从十进制数转换时会丢失在二进制数中

标签 java binary decimal

我是 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/

相关文章:

java - 如何使用 Vagrant 连接两个虚拟机(postgreSQL 和 tomee)?

java - 在字符串变量中携带一个小图像文件?

python - Django DecimalField 在保存时生成 "quantize result has too many digits for current context"错误

c++十进制转二进制混淆

javascript - 在 Javascript 中将非 unicode 二进制字符串转换为字节数组

r - 在 R 中编写每列具有不同小数位数的数据框

java - 如何在另一个类中调用一个类的 main() 方法?

java - 使用 JSON 转换器的自定义字段扩展 HashMap

java - 从 Java 调用的 Lisp 代码

java - 在Java中替换所有文件类型中的字符串