跳到主要内容

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 != 0rem = n % 10n /= 10idec += rem * pow(2, i)
1101 != 01101 % 10 = 11101 / 10 = 11000 + 1 * pow(2, 0) = 1
110 != 0110 % 10 = 0110 / 10 = 1111 + 0 * pow(2, 1) = 1
11 != 011 % 10 = 111 / 10 = 121 + 1 * pow(2, 2) = 5
1 != 01 % 10 = 11 / 10 = 035 + 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 != 0rem = n % 2n /= 2ibin += rem * ii *= 10
13 != 013 % 2 = 113 / 2 = 610 + 1 * 1 = 11 * 10 = 10
6 != 06 % 2 = 06 / 2 = 3101 + 0 * 10 = 110 * 10 = 100
3 != 03 % 2 = 13 / 2 = 11001 + 1 * 100 = 101100 * 10 = 1000
1 != 01 % 2 = 11 / 2 = 01000101 + 1 * 1000 = 11011000 * 10 = 10000
0 != 0---循环终止

因此,十进制的 13 对应于二进制的 1101