#include<stdio.h>
#define DIF_VAL (1<<15)
int find_sigbit(int *tlb,int n)
{
int r=0;
if(n&0xffff0000){r+=16;n>>=16;}
// if(n&0xff00){r+=8;n>>=8;}
return r+tlb[n];
}
int main(void)
{
int k;
int tlb[32768];
int idx=0,idv=1,i;
for(i=0;i<DIF_VAL;i++)
{
if(i>=idv)
{
idx++;idv<<=1;
}
tlb[i]=idx;
}
/* for(i=0;i<DIF_VAL;i++)
{
printf("%d ",tlb[i]);
if((i+1)%32==0)printf("\n");
}*/
printf("please enter a value\n");
scanf("%d",&k);
printf("k's first significant bit is %d\n",find_sigbit(tlb,k));
return 0;
}
联系客服