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

16진법에서 10진법을 위한 C++ 프로그램

<시간/>

16진수를 입력받아 주어진 16진수를 10진수로 변환하는 작업입니다.

컴퓨터의 16진수는 16진수로 표시되고 10진수는 10진수로 표시되고 0-9 값으로 표시되는 반면 16진수는 0-15부터 시작하는 숫자를 가지며 10은 A, 11은 B, 12는 C, 13은 D, 14는 E, 15는 F입니다.

16진수를 10진수로 변환하려면 다음 단계를 따르십시오 -

  • 오른쪽에서 왼쪽으로 나머지를 통해 숫자를 추출한 다음 0에서 시작하는 거듭제곱을 곱하고 (자릿수) – 1이 될 때까지 1씩 증가합니다.
  • 16진법에서 2진법으로의 변환을 수행해야 하기 때문에 8진법은 16진법이므로 거듭제곱의 기수는 16이 됩니다.
  • 주어진 입력의 자릿수에 밑수와 거듭제곱을 곱하고 결과를 저장합니다.
  • 곱한 값을 모두 더하여 십진수가 되는 최종 결과를 얻습니다.

다음은 16진수를 10진수로 변환한 그림입니다.

16진법에서 10진법을 위한 C++ 프로그램

Input-: ACD
   A(10) will be converted to a decimal number by -: 10 X 16^2 = 2560
   C(12) will be converted to a decimal number by -: 12 X 16^1 = 192
   D(13) will be converted to a decimal number by -: 13 X 16^0 = 13
Output-: total = 13 + 192 + 2560 = 2765
에 의해 10진수로 변환됩니다.

알고리즘

Start
Step 1-> declare function to convert hexadecimal to decimal
   int convert(char num[])
      Set int len = strlen(num)
      Set int base = 1
      Set int temp = 0
      Loop For int i=len-1 and i>=0 and i—
         IF (num[i]>='0' && num[i]<='9')
            Set temp += (num[i] - 48)*base
            Set base = base * 16
         End
         Else If (num[i]>='A' && num[i]<='F')
            Set temp += (num[i] - 55)*base
            Set base = base*16
         End
         return temp
step 2-> In main()
   declare char num[] = "3F456A"
   Call convert(num)
Stop

#include<iostream>
#include<string.h>
using namespace std;
//convert hexadecimal to decimal
int convert(char num[]) {
   int len = strlen(num);
   int base = 1;
   int temp = 0;
   for (int i=len-1; i>=0; i--) {
      if (num[i]>='0' && num[i]<='9') {
         temp += (num[i] - 48)*base;
         base = base * 16;
      }
      else if (num[i]>='A' && num[i]<='F') {
         temp += (num[i] - 55)*base;
         base = base*16;
      }
   }
   return temp;
}
int main() {
   char num[] = "3F456A";
   cout<<num<<" after converting to deciaml becomes : "<<convert(num)<<endl;
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다.

3F456A after converting to deciaml becomes : 4146538