Java中的十进制到二进制赋值

Java中的十进制到二进制赋值,java,binary,Java,Binary,嗨,我有一个赋值,我必须转换一个变量“二进制”(这是一个随机二进制(例如11001))并打印它 这很难,因为Java中没有内置的潜在功能 示例:1010=1*2^3+0*2^2+1*2^1+0*2^0=8+0+2+0=10 我的代码怎么了 int a = 1; int b = 0; for (int i=binary.length()-1;i>0;i--){ if (binary.charAt(binary.length()-1) == '1'){ b += 1;

嗨,我有一个赋值,我必须转换一个变量“二进制”(这是一个随机二进制(例如11001))并打印它

这很难,因为Java中没有内置的潜在功能

示例:1010=1*2^3+0*2^2+1*2^1+0*2^0=8+0+2+0=10

我的代码怎么了

int a = 1;
int b = 0;
for (int i=binary.length()-1;i>0;i--){
    if (binary.charAt(binary.length()-1) == '1'){
        b += 1;
    if (binary.charAt(i) == '1'){
        for (int j=binary.length()-1;j>0;i--){
            a = a*2;
        }
    }
    }
}
System.out.println(a+b);

目前它只打印“1”

实际上在
Integer
中有一个静态方法,
parseInt(字符串s,int基数)
可以解决您的问题:

String binary = "11001010110";
int result = Integer.parseInt(binary, 2);

您正在从最低有效位到最高有效位对字符进行迭代(虽然跳过最高有效位),但出于某种原因,您总是检查最后一个字符是否为“1”,而不是检查当前字符

使用与循环类似的代码,我建议:

int result = 0;
int a = 1;
for (int i = binary.length() - 1; i >= 0; i--) {
    if (binary.charAt(i) == '1') {
        result += a; // this adds 2^k to the result for each '1' digit, since a is initialized
                     // to 2^0 and is multiplied by 2 in each iteration
    }
    a *= 2;
}

例如,如果
binary
被初始化为“10010011”,那么
result
就是
147
您的代码尝试使用For循环计算2的每一次幂,这是可以的,尽管Java中有更简单的方法
按照您的标准,您可以这样做:

String binary = "111011";
int sum = 0;
for (int i = binary.length() - 1; i >= 0 ; i--){
    if (binary.charAt(i) == '1'){
        int a = 1;
        for (int j = 1; j < binary.length() - i; j++) {
            a *= 2;
        }
        sum += a;
    }
}
System.out.println(sum);
stringbinary=“111011”;
整数和=0;
对于(int i=binary.length()-1;i>=0;i--){
if(二进制字符(i)='1'){
INTA=1;
对于(int j=1;j
它打印
59


代码中出现错误的是条件
i>0

它应该是
i>=0
,否则会丢失字符串的第一个字符。

请提供有关错误/不起作用的详细信息。为什么您认为在Java中求幂很困难
Math.pow
已经存在了相当长的一段时间,如果不导入任何内容,那么就很难了。