题目描述
将一个二进制数,转换为对应的十进制数。
输入描述
输入一个二进制数,以回车结束。该二进制数为正数,长度不超过31。
输出描述
输出一个整数,为该二进制数对应的十进制数。
输入样例
100000000001
输出样例
2049
在 C++ 中,length()
是 std::string
类的成员函数,用于获取字符串的长度(即字符的个数)。这个函数返回一个无符号整数类型 (size_t
),表示字符串中字符的数量。
以下是一个简单的例子:
#include <iostream>
#include <string>
int main() {
std::string myString = "Hello, World!";
// 使用 length() 函数获取字符串长度
std::size_t len = myString.length();
std::cout << "Length of the string: " << len << std::endl;
return 0;
}
在这个例子中,myString.length()
返回字符串 "Hello, World!" 的长度,然后将结果存储在变量 len
中,最后输出字符串的长度。在实际使用中,length()
通常用于循环迭代字符串的每个字符或其他与字符串长度相关的操作。
在 C++ 中,可以通过下标访问字符串中的某一位字符。字符串的下标从 0 开始,可以使用方括号 []
操作符来获取特定位置的字符。例如:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "Hello, World!";
// 输出字符串中的第5个字符(下标为4)
cout << "Character at index 4: " << str[4] << endl;
return 0;
}
正式做题
当我们将二进制数转换为十进制数时,我们需要了解二进制和十进制的表示方式。
在二进制数中,每一位的权重是2的幂次方,从右往左依次增加。例如,二进制数 1101
表示:
1×2^3+1×2^2+0×2^1+1×2^0
#include <iostream>
#include <cmath>
using namespace std;
int binaryToDecimal(string binary) {
int decimal = 0;
int length = binary.length();
for (int i =0 ; i <= length - 1; i++) {
if (binary[i] == '1') {
decimal += pow(2, length - 1 - i);
}
}
return decimal;
}
int main() {
string binary;
cout << "Enter a binary number: ";
cin >> binary;
int decimal = binaryToDecimal(binary);
cout << "Decimal equivalent: " << decimal << endl;
return 0;
}
以下是步骤的含义:
-
包含必要的头文件:
cppCopy code #include <iostream> #include <cmath> using namespace std; 这里包含了输入输出流头文件 iostream,以及数学库头文件 cmath,用于使用 pow 函数。
-
定义二进制转十进制函数:
int binaryToDecimal(string binary) { int decimal = 0; int length = binary.length(); for (int i =0 ; i <= length - 1; i++) { if (binary[i] == '1') { decimal += pow(2, length - 1 - i); } } return decimal; }
binaryToDecimal
函数接受一个表示二进制数的字符串,并返回对应的十进制数。decimal
变量用于存储十进制结果,初始化为 0。length
变量存储二进制字符串的长度。- 使用
for
循环从左到右遍历二进制字符串的每一位。 - 如果当前位为 '1',则将对应的权重加到
decimal
中。
-
主程序:
int main() { string binary; cout << "Enter a binary number: "; cin >> binary; int decimal = binaryToDecimal(binary); cout << "Decimal equivalent: " << decimal << endl; return 0; }
- 用户被提示输入一个二进制数。
- 用户输入的二进制数存储在字符串变量
binary
中。 - 调用
binaryToDecimal
函数将二进制数转换为十进制数。 - 输出转换后的十进制数。