C++程式:將二進位制數轉換為十進位制數,反之亦然
在計算機系統中,二進位制數以二進位制數製表示,而十進位制數以十進位制數製表示。二進位制數以2為基數,而十進位制數以10為基數。
以下是十進位制數及其對應的二進位制數的示例:
十進位制數 | 二進位制數 |
---|---|
10 | 01010 |
7 | 00111 |
25 | 11001 |
16 | 10000 |
下面是一個程式,可以將二進位制數轉換為十進位制數,並將十進位制數轉換為二進位制數。
示例
#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);
廣告