在计算机系统中,八进制数以八进制数表示,而十进制数以十进制数表示。八进制数以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表示数字在数字中的位置。使用while循环可找到octalNum的值。
对于while循环的每次迭代,十进制Num除以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);