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

C++에서 16진수 계산

<시간/>

시작과 끝이 있는 범위가 주어지고 주어진 범위에 있는 16진수 또는 알파벳의 개수를 계산하는 작업이 주어집니다.

16진수 알파벳이란 무엇입니까?

컴퓨터 용어로 16진수는 밑이 16인 숫자로, 이진수를 16비트로 표현할 수 있음을 의미합니다. 0-15 사이의 정수로 구성됩니다. 여기서 10은 A, 11은 B, 12는 C, 13은 D, 14는 E, 15는 F로 표시됩니다.

따라서 아래 프로그램에서 우리의 임무는 범위가 16진법 알파벳으로 구성되어 있는지 여부를 찾는 것입니다.

Input − start = 10, End = 13
Output − 4

설명 − 10과 13 사이에는 4개의 16진수가 있습니다. 즉, 10은 A, 11은 B, 12는 C, 13은 D입니다.

Input − start = 15, End = 16
Output − 1

설명 − 16진수 알파벳은 하나만 있습니다. 즉, 15는 F로, 16은 10으로 각각 표시됩니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 변수에서 시작하여 시작과 끝을 입력합니다.

  • 개수를 저장할 변수 개수를 선언하고 0으로 초기화

  • 루프를 시작하여 with i를 시작하고 i가 끝보다 작거나 같을 때까지

  • 루프 내에서 i가 10보다 크거나 같은지 확인하고 i도 15보다 크거나 같은지 확인한 다음 1만큼 카운트를 늘립니다.

  • 그렇지 않으면 i가 15보다 큰지 확인하십시오.

  • 그런 다음 임시 변수 temp를 i 값으로 설정하고 k가 0이 아닌 동안 순회합니다.

  • 그리고 k%16이 10보다 크거나 같은지 확인하십시오.

  • 개수를 1 증가

  • , temp/16으로 온도를 설정합니다.

  • count 값을 반환합니다.

  • 결과를 인쇄하십시오.

예시

#include <iostream>
using namespace std;
// Function to count the
// total number hexadecimal alphabet
int counthexa(int start, int end){
   int result = 0;
   for (int i = start; i <= end; i++){
      // All hexadecimal alphabets
      // from 10 to 15
      if (i >= 10 && i <= 15){
         result++;
      }
      // If i > 15 then perform mod by 16 repeatedly
      // till the number is > 0
      // If number % 16 > 10 then increase count
      else if (i > 15){
         int k = i;
         while (k != 0){
            if (k % 16 >= 10){
               result++;
            }
            k = k / 16;
         }
      }
   }
   return result;
}
// Main Function
int main(){
   int start = 10, end = 60;
   cout << "count is: "<<counthexa(start, end);
   return 0;
}

출력

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

count is: 21