C++程序 二进制转十进制转换
在程序开发中,经常需要将二进制数转换成十进制数。我们可以手动计算,也可以使用C++编写程序来完成这个过程。
二进制转十进制的算法
二进制转换成十进制的算法很简单,只需将二进制数的每一位乘以2的幂次方,然后累加即可。例如,要将二进制数1011转换成十进制数,可以按下列方法进行计算:
1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0 = 8 + 0 + 2 + 1 = 11
因此,1011的十进制表示为11。
这个算法可以用C++编写成一个函数,如下:
int binaryToDecimal(int n) {
int num = n;
int dec_value = 0;
int base = 1;
int temp = num;
while (temp) {
int last_digit = temp % 10;
temp = temp / 10;
dec_value += last_digit * base;
base = base * 2;
}
return dec_value;
}
十进制转二进制的算法
十进制数转换成二进制数的算法也非常简单,只要将十进制数除以2,将余数保存下来,不断重复这个过程直到商为0为止。最后,按倒序将所得到的余数排列在一起,就得到了相应的二进制数。例如,将十进制数11转换成二进制数:
11 / 2 = 5 余 1
5 / 2 = 2 余 1
2 / 2 = 1 余 0
1 / 2 = 0 余 1
因此,11的二进制表示为1011。
这个算法也可以用C++编写成一个函数,如下:
int decimalToBinary(int n) {
int binary = 0;
int base = 1;
while (n) {
int rem = n % 2;
n = n / 2;
binary += rem * base;
base = base * 10;
}
return binary;
}
完整代码示例
下面是一个完整的C++程序,可以将二进制数转换为十进制数,或者将十进制数转换为二进制数。所有代码都使用注释进行了详细解释,帮助您理解算法。
#include<iostream>
#include<cmath>
using namespace std;
// 将二进制数转换为十进制数
int binaryToDecimal(int n) {
int num = n;
int dec_value = 0;
int base = 1;
int temp = num;
while (temp) {
int last_digit = temp % 10;
temp = temp / 10;
dec_value += last_digit * base;
base = base * 2;
}
return dec_value;
}
// 将十进制数转换为二进制数
int decimalToBinary(int n) {
int binary = 0;
int base = 1;
while (n) {
int rem = n % 2;
n = n / 2;
binary += rem * base;
base = base * 10;
}
return binary;
}
// 主函数,用于输入输出
int main() {
int n, choice;
cout << "Enter the number you want to convert: ";
cin >> n;
cout << "\nSelect your choice: \n1. Convert binary to decimal.\n2. Convert decimal to binary.\nYour choice: ";
cin >> choice;
switch (choice) {
case 1: {
cout << "The decimal equivalent of " << n << " is " << binaryToDecimal(n) << endl;
break;
}
case 2: {
cout << "The binary equivalent of " << n << " is " << decimalToBinary(n) << endl;
break;
}
default: {
cout << "Invalid choice. Please select 1 or 2." << endl;
}
}
return 0;
}
结论
因此,我们可以看到,使用C++编写二进制转十进制或十进制转二进制的程序非常简单。我们只需要使用简单的算法和一些基本的编程知识,就可以完成这个任务。使用C++进行编程可以大大简化我们日常生活中的重复和枯燥的工作。