代码之家  ›  专栏  ›  技术社区  ›  green tea

将十进制int转换为二进制

  •  0
  • green tea  · 技术社区  · 4 年前

    我的任务是编写一个方法,将任何十进制数转换为二进制数,该数以int形式给出,转换后的(二进制)数也应以int形式返回。 现在我有了一些解决方案,但我不知道如何将转换后的数字保存为int,因为我在方法中使用的是字符串!我觉得 .parseInt() 太容易了,因为那样我也可以用 . toBinaryString()

    static void intToBin (int a) {
    
    String bin = "";
    
    while (a > 0) {
        if ( a % 2 == 0 )
            bin = bin + "0";
        else
            bin = bin + "1";
        a /= 2;
    }
    
    for (int i = 0; i < bin.length();i ++) {
        System.out.print(bin.charAt(i));
    }
    
    2 回复  |  直到 4 年前
        1
  •  1
  •   WJS    4 年前

    首先,二进制表示就是将十进制数的值转换为二进制字符串。或者十进制只是二进制数的表示。如果你将一个二进制数转换为整数,它将是一个十进制数(无论它是否只有1和0)。

    int a = 1001;  //is a decimal number  == 1,001
    int b = 0b1001; //is a decimal number == 9
    

    上述内容将以十进制打印,因为这是打印方法的默认输出表示。在内部,所有数字都是1和0(甚至可能是+5v和0v,具体取决于你想要的具体程度)。

    如果你想将二进制字符串转换为十进制,也可以这样做。除了不是除以二得到余数,而是乘以二。

    int sum =0
    String s = "11011";  //27
    for (char c : s.toCharArray()) {
       sum = sum * 2 + (c-'0'); // multiply by 2 and add the bit.
    }
    System.out.println(sum);
    
    

    印刷品

    27
    

    请注意,我不需要将其存储为字符串,因为decimal是默认表示形式(正如我之前解释的那样)。

        2
  •  0
  •   Giorgi Tsiklauri    4 年前

    这将满足您的要求:

    public static int decimalToBinary(int a) {
        String result = "";
        while (a > 0) {
            int res = a % 2;
            a = a / 2;
            result = res + result;
        }
        return Integer.parseInt(result);
    }
    
        3
  •  0
  •   user13146129 user13146129    4 年前
    String text = etxtDecimal.getText().toString();
    binary = Integer.toBinaryString(Integer.parseInt(text));
    

    确实如此。我们使用 toBinaryString 将十进制转换为二进制

        4
  •  0
  •   4 revs<br/>user13510609&#13;    4 年前

    只是一个注释,而不需要循环:

    for (int i = 0; i < bin.length();i ++) {
        System.out.print(bin.charAt(i));
    }
    

    可以添加数字 在前面 结果:

    ...
    if ( a % 2 == 0 )
        bin = "0" + bin;
    else
        bin = "1" + bin;
    ...
    System.out.println(bin);
    

    (也可以添加以下结果 a % 2 ,无需 if 不确定是否更好 )


    如果你想将二进制表示保存为 int (有点奇怪,令人困惑)。
    示例:输入 5 ,输出 101

    int bin = 0;
    int mult = 1;
    while (a > 0) {
        if (a % 2 == 1) {
            bin += mult;
        }
        mult *= 10;
        a /= 2;
    }
    

    没有经过测试,只是一个想法,可以激发灵感