C++程序:八进制数与十进制数的相互转换


在计算机系统中,八进制数以八进制数系统表示,而十进制数以十进制数系统表示。八进制数是基数为8的数,而十进制数是基数为10的数。

十进制数及其对应的八进制数示例如下所示。

十进制数八进制数
1012
70106
2531
1620

将八进制数转换为十进制数,并将十进制数转换为八进制数的程序如下所示:

示例

在线演示

#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);

更新于:2020年6月24日

526 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告