将十进制整数转换为二进制

时间:2021-01-17 22:28:59

标签: java

我的任务是编写一个将任何十进制数转换为二进制数的方法,该数以 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));
}

4 个答案:

答案 0 :(得分:1)

首先,二进制表示就是将一个十进制数的值转化为一个二进制字符串。或者十进制只是二进制数的表示。如果将二进制数转换为 int,它将是一个十进制数(无论它是否只有 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

请注意,我不需要将它存储为字符串,因为十进制是默认表示(正如我之前解释的)。

答案 1 :(得分:0)

这将满足您的要求:

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);
}

答案 2 :(得分:0)

String text = etxtDecimal.getText().toString();
binary = Integer.toBinaryString(Integer.parseInt(text));

是的。我们使用 toBinaryString 将十进制转换为二进制

答案 3 :(得分:0)

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

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;
}

未经测试,只是一个想法,以启发