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+瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告