C++程式:八進位制數與十進位制數的相互轉換
在計算機系統中,八進位制數以八進位制數系統表示,而十進位制數以十進位制數系統表示。八進位制數是基數為8的數,而十進位制數是基數為10的數。
十進位制數及其對應的八進位制數示例如下所示。
| 十進位制數 | 八進位制數 |
|---|---|
| 10 | 12 |
| 70 | 106 |
| 25 | 31 |
| 16 | 20 |
將八進位制數轉換為十進位制數,並將十進位制數轉換為八進位制數的程式如下所示:
示例
#include <iostream>
#include <cmath>
using namespace std;
void DecimalToOctal(int decimalNum) {
int octalNum = 0, placeValue = 1;
int dNo = decimalNum;
while (decimalNum != 0) {
octalNum += (decimalNum % 8) * placeValue;
decimalNum /= 8;
placeValue *= 10;
}
cout<<"Octal form of decimal number "<<dNo<<" is "<<octalNum<<endl;
}
void OctalToDecimal(int octalNum) {
int decimalNum = 0, power = 0;
int oNo = octalNum;
while(octalNum != 0) {
decimalNum += (octalNum%10) * pow(8,power);
++power;
octalNum/=10;
}
cout<<"Decimal form of octal number "<<oNo<<" is "<<decimalNum<<endl;
}
int main() {
DecimalToOctal(20);
OctalToDecimal(32);
return 0;
}輸出
Octal form of decimal number 20 is 24 Decimal form of octal number 32 is 26
在上述程式中,`DecimalToOctal` 函式將十進位制數轉換為八進位制數,`OctalToDecimal` 函式將八進位制數轉換為十進位制數。
在 `DecimalToOctal` 函式中,變數 `octalNum` 最初初始化為零。變數 `placeValue` 表示數字中數字的位置。`octalNum` 的值使用 while 迴圈找到。
對於 while 迴圈的每次迭代,`decimalNum` 除以 8,餘數乘以 `placeValue`。將其新增到 `octalNum` 的前一個值。`decimalNum` 也除以 8,並將商儲存回去。`placeValue` 乘以 10。
演示此功能的程式碼片段如下所示。
while (decimalNum != 0) {
octalNum += (decimalNum % 8) * placeValue;
decimalNum /= 8;
placeValue *= 10;
}獲得八進位制值(即 `octalNum`)後,將其顯示出來。如下所示:
cout<<"Octal form of decimal number "<<dNo<<" is "<<octalNum<<endl;
在 `OctalToDecimal` 函式中,在 while 迴圈的每次迭代中,`octalNum` 除以 8,餘數乘以 8 的冪。將其新增到 `decimalNum` 的前一個值。冪增加 1,`octalNum` 除以 10。如下所示:
while(octalNum != 0) {
decimalNum += (octalNum%10) * pow(8,power);
++power;
octalNum/=10;
}找到 `decimalNum` 的值後,將其顯示出來。如下所示:
cout<<"Decimal form of octal number "<<oNo<<" is "<<decimalNum<<endl;
`main()` 函式僅包含對 `DecimalToOctal()` 和 `OctalToDecimal()` 函式的呼叫,並帶有所需的值。如下面的程式碼片段所示。
DecimalToOctal(20); OctalToDecimal(32);
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP