问题描述:一个二进制形式的数, start是这个数的起始位置, width是这个数的宽度,以十进制输出该数
#include<stdio.h>
#include<stdlib.h>
// 用typedef 将 unsigned char 创建别名 为U8
typedef unsigned char U8;
typedef unsigned long long U64;
U32 get_Mask(U8 start, U8 width)
{
U32 Mask = 0;
U8 i = 0;
for(i=start; i<start+width; i++)
{
Mask |= (1 << i);
}
return Mask;
}
int main()
{
int start = 0;
int width = 0;
printf("Input the start and width value:");
scanf("%d %d", &start, &width);
U32 Mask = get_Mask(start,width);
printf("Mask=%llu\n",Mask);
return 0;
}
执行结果
Input the start and width value:2 2
Mask=12
Input the start and width value:0 2
Mask=3