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);
广告