Java中的十进制到二进制赋值
嗨,我有一个赋值,我必须转换一个变量“二进制”(这是一个随机二进制(例如11001))并打印它 这很难,因为Java中没有内置的潜在功能 示例:1010=1*2^3+0*2^2+1*2^1+0*2^0=8+0+2+0=10 我的代码怎么了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;
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
已经存在了相当长的一段时间,如果不导入任何内容,那么就很难了。