计算C ++中的十六进制数

给定一个具有开始和结束的范围,任务是计算给定范围内存在的十六进制数字或字母的计数。

什么是十六进制字母?

用计算机术语来说,十六进制数是那些以16为底的数字,这意味着二进制数可以用16位表示。它由从0到15的整数组成。其中10表示为A,11表示为B,12表示为C,13表示为D,14表示为E,15表示为F.

因此,在下面的程序中,我们的任务是查找范围是否包含十六进制字母。

例如

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

说明-在10和13之间有4个十六进制数,即10是A,11是B,12是C,13是D。

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

说明-只有一个十六进制字母,即F表示15,而16表示成10。

以下程序中使用的方法如下

  • 输入从变量开始的范围,例如开始和结束。

  • 声明一个可变计数以存储计数并将其初始化为0

  • 以i开始循环,直到i小于或等于end

  • 在循环内,检查i是否大于或等于10并且i也大于或等于15,然后将计数增加1

  • 否则,请检查我是否大于15

  • 然后,将临时变量temp的值设置为i并遍历,而k不等于0

  • 并检查k%16是否大于或等于10

  • 计数增加1

  • 并通过temp / 16设置温度

  • 返回计数值

  • 打印结果。

示例

#include <iostream>
using namespace std;
//计数功能
//十六进制总数
int counthexa(int start, int end){
   int result = 0;
   for (int i = start; i <= end; i++){
      //所有十六进制字母
      //从10到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;
}
//主要功能
int main(){
   int start = 10, end = 60;
   cout << "count is: "<<counthexa(start, end);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

count is: 21