C++程序:将二进制数转换为十进制数,反之亦然


在计算机系统中,二进制数以二进制数制表示,而十进制数以十进制数制表示。二进制数以2为基数,而十进制数以10为基数。

以下是十进制数及其对应的二进制数的示例:

十进制数二进制数
1001010
700111
2511001
1610000

下面是一个程序,可以将二进制数转换为十进制数,并将十进制数转换为二进制数。

示例

 在线演示

#include <iostream>
using namespace std;
void DecimalToBinary(int n) {
   int binaryNumber[100], num=n;
   int i = 0;
   while (n > 0) {
      binaryNumber[i] = n % 2;
      n = n / 2;
      i++;
   }
   cout<<"Binary form of "<<num<<" is ";
   for (int j = i - 1; j >= 0; j--)
      cout << binaryNumber[j];
   cout<<endl;
}
int BinaryToDecimal(int n) {
   int decimalNumber = 0;
   int base = 1;
   int temp = n;
   while (temp) {
      int lastDigit = temp % 10;
      temp = temp/10;
      decimalNumber += lastDigit*base;
      base = base*2;
   }
   cout<<"Decimal form of "<<n<<" is "<<decimalNumber<<endl;;
}
int main() {
   DecimalToBinary(23);
   BinaryToDecimal(10101);
   return 0;
}

输出

Binary form of 23 is 10111
Decimal form of 10101 is 21

在上面给出的程序中,有两个函数DecimalToBinary和BinaryToDecimal。它们分别将数字从十进制转换为二进制,以及从二进制转换为十进制。

在DecimalToBinary函数中,十进制数n的二进制值存储在数组binaryNumber[]中。使用一个while循环,并将n模2运算的结果存储在每次循环迭代的binaryNumber[]中。以下代码片段展示了这一点。

while (n > 0) {
   binaryNumber[i] = n % 2;
   n = n / 2;
   i++;
}

之后,使用for循环显示二进制数。如下所示。

cout<<"Binary form of "<<num<<" is ";
for (int j = i - 1; j >= 0; j--)
cout << binaryNumber[j];

在BinaryToDecimal()函数中,使用一个while循环将二进制数转换为十进制数。LastDigit包含temp变量的最后一位。base包含基数,例如2、4、6、8等。DecimalNumber包含先前DecimalNumber值与LastDigit和base的乘积的总和。

所有这些都通过以下代码片段演示:

while (temp) {
   int lastDigit = temp % 10;
   temp = temp/10;
   decimalNumber += lastDigit*base;
   base = base*2;
}

在main()函数中,调用DecimalToBinary()和BinaryToDecimal()函数。如下所示。

DecimalToBinary(23);
BinaryToDecimal(10101);

更新于:2020年6月24日

2K+浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告