C++ 编写将二进制数转换为十进制数及其逆转换的程序
要理解这个示例,你应该具备以下 C++ 编程 主题的知识:
示例 1:C++ 程序将二进制数转换为十进制数
// 将二进制转换为十进制
#include <iostream>
#include <cmath>
using namespace std;
// 函数原型
int convert(long long);
int main() {
long long n;
cout << "Enter a binary number: ";
cin >> n;
cout << n << " in binary = " << convert(n) << " in decimal";
return 0;
}
// 函数定义
int convert(long long n) {
int dec = 0, i = 0, rem;
while (n != 0) {
rem = n % 10;
n /= 10;
dec += rem * pow(2, i);
++i;
}
return dec;
}
输出
Enter a binary number: 1101
1101 in binary = 13 in decimal
在程序中,我们引入了头文件 cmath
来执行程序中的数学运算。
我们请求用户输入一个二进制数,并将其传递给 convert()
函数以转换为十进制数。
假设 n = 1101
。让我们来看看 convert()
函数中的 while
循环是如何工作的。
n != 0 | rem = n % 10 | n /= 10 | i | dec += rem * pow(2, i) |
---|---|---|---|---|
1101 != 0 | 1101 % 10 = 1 | 1101 / 10 = 110 | 0 | 0 + 1 * pow(2, 0) = 1 |
110 != 0 | 110 % 10 = 0 | 110 / 10 = 11 | 1 | 1 + 0 * pow(2, 1) = 1 |
11 != 0 | 11 % 10 = 1 | 11 / 10 = 1 | 2 | 1 + 1 * pow(2, 2) = 5 |
1 != 0 | 1 % 10 = 1 | 1 / 10 = 0 | 3 | 5 + 1 * pow(2, 3) = 13 |
0 != 0 | - | - | - | 循环终止 |
所以,二进制的 1101
等于十进制的 13
。
现在,让我们来看看如何将十进制数转换为二进制数。
示例 2:C++ 程序将十进制数转换为二进制数
// 将十进制转换为二进制
#include <iostream>
#include <cmath>
using namespace std;
long long convert(int);
int main() {
int n, bin;
cout << "输入一个十进制数: ";
cin >> n;
bin = convert(n);
cout << n << " in decimal = " << bin << " in binary" << endl;
return 0;
}
long long convert(int n) {
long long bin = 0;
int rem, i = 1;
while (n != 0) {
rem = n % 2;
n /= 2;
bin += rem * i;
i *= 10;
}
return bin;
}
输出
输入一个十进制数: 13
13 in decimal = 1101 in binary
假设 n = 13
。让我们来看看 convert()
函数中的 while
循环是如何工作的。
n != 0 | rem = n % 2 | n /= 2 | i | bin += rem * i | i *= 10 |
---|---|---|---|---|---|
13 != 0 | 13 % 2 = 1 | 13 / 2 = 6 | 1 | 0 + 1 * 1 = 1 | 1 * 10 = 10 |
6 != 0 | 6 % 2 = 0 | 6 / 2 = 3 | 10 | 1 + 0 * 10 = 1 | 10 * 10 = 100 |
3 != 0 | 3 % 2 = 1 | 3 / 2 = 1 | 100 | 1 + 1 * 100 = 101 | 100 * 10 = 1000 |
1 != 0 | 1 % 2 = 1 | 1 / 2 = 0 | 1000 | 101 + 1 * 1000 = 1101 | 1000 * 10 = 10000 |
0 != 0 | - | - | - | 循环终止 |
因此,十进制的 13
对应于二进制的 1101
。