我的任务是编写一个将任何十进制数转换为二进制数的方法,该数以 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));
}
答案 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;
}
未经测试,只是一个想法,以启发