代码
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
double power(double x, int n); // 原函数声明
int main () {
__int64 value;//二进制64位
char c[64];
while (cin >> c){
if(c[0] == '-'){
break;
}
int len = strlen(c); // 获取输入的二进制的长度strlen() 函数从字符串的开头位置依次向后计数,直到遇见\0,然后返回计时器的值。最终统计的字符串长度不包括\0
value = 0;
for (int i = len - 1; i >= 0; i--){
if (c[i] == '1'){
// 2的i次方结果为double类型,转换为int类型,然后累加到value上。
value += static_cast<__int64>(power(2, len - i - 1)); // static_cast<__int64>(参数)将double型数据转换成__int64型数据
}
}
cout << value << endl;
}
}
double power (double x, int n){ // 返回给定数字的乘幂,返回类型为double型
double val = 1.0;
while (n--){
val *= x;
}
return val;
}