Java 将十进制整数转换成二进制

Java 将十进制整数转换成二进制,java,Java,我的任务是编写一个方法,将任何十进制数转换为二进制数,该数以int形式给出,转换后的(二进制)数也应以int形式返回。 现在我得到了一个解决方案,但我不知道如何将转换后的数字保存为int,因为我正在使用方法中的字符串!我觉得.parseInt()太简单了,因为那样我也可以直接使用。toBinaryString() static void intToBin(inta){ 字符串bin=“”; 而(a>0){ 如果(a%2==0) bin=bin+“0”; 其他的 bin=bin+“1”; a/=2

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

static void intToBin(inta){
字符串bin=“”;
而(a>0){
如果(a%2==0)
bin=bin+“0”;
其他的
bin=bin+“1”;
a/=2;
}
对于(int i=0;i
这将满足您的要求:

公共静态整数十进制(整数a){
字符串结果=”;
而(a>0){
int res=a%2;
a=a/2;
结果=res+结果;
}
返回整数.parseInt(结果);
}

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

上面的数字将以十进制打印,因为这是打印方法的默认输出表示形式。在内部,所有数字都是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
请注意,我不需要将其存储为字符串,因为十进制是默认表示形式(正如我前面解释的)


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

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

for (int i = 0; i < bin.length();i ++) {
    System.out.print(bin.charAt(i));
}
(也可以只添加
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;
}

没有测试,只是一个想法,启发你,当你将十进制数43转换成整数并打印出来时,你期望值是什么?我不确定我是否理解;它已经是一个整数了。将其“转换”为二进制,然后再将其转换回
int
,似乎又一次…奇怪了。
String text = etxtDecimal.getText().toString();
binary = Integer.toBinaryString(Integer.parseInt(text));
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);
int bin = 0;
int mult = 1;
while (a > 0) {
    if (a % 2 == 1) {
        bin += mult;
    }
    mult *= 10;
    a /= 2;
}