Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

8진수를 10진수로 또는 그 반대로 변환하는 C++ 프로그램

<시간/>

컴퓨터 시스템에서 8진수는 8진수 시스템으로 표현되고 10진수는 10진수 시스템으로 표현됩니다. 8진수는 8진수이고 10진수는 10진수입니다.

10진수 및 해당 8진수의 예는 다음과 같습니다.

십진수 8진수
10 12
70 106
25 31
16 20

8진수를 10진수로, 10진수를 8진수로 변환하는 프로그램은 다음과 같습니다. -

예시

#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 함수는 10진수를 8진수로 변환하고 OctalToDecimal 함수는 8진수를 10진수로 변환합니다.

DecimalToOctal 함수에서 초기에 변수 octalNum은 0으로 초기화됩니다. 변수 placeValue는 숫자에서 숫자의 위치를 ​​나타냅니다. octalNum의 값은 while 루프를 사용하여 찾습니다.

while 루프의 각 반복에 대해 decimalNum은 8로 나뉘고 나머지는 placeValue로 곱해집니다. 이것은 octalNum의 이전 값에 추가됩니다. 또한 decimalNum은 8로 나누어지고 몫은 다시 저장됩니다. placeValue에 10을 곱합니다.

이를 보여주는 코드 조각은 다음과 같습니다.

while (decimalNum != 0) {
   octalNum += (decimalNum % 8) * placeValue;
   decimalNum /= 8;
   placeValue *= 10;
}

Octal 값, 즉 octalNum이 획득된 후 표시됩니다. 이것은 다음과 같습니다 -

cout<<"Octal form of decimal number "<<dNo<<" is "<<octalNum<<endl;
입니다.

OctalToDecimal 함수에서 while 루프의 각 반복에서 octalNum을 8로 나누고 나머지에 8을 곱하여 거듭제곱합니다. 이것은 decimalNum의 이전 값에 추가됩니다. Power는 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);