#include <stdio.h>
int calculate_first_one_in_left(unsigned int n)
{
int start = 0, shift_r_num = 0;
while(1)
{
if (n == 0) {
shift_r_num = (start == 0) ? -1 : (shift_r_num - 1) ;
break;
}
start = 1;
n >>= 1;
shift_r_num ++;
}
return shift_r_num;
}
int main()
{
unsigned int n=0x1100;
printf ("n=0x%x, %d\n", n, calculate_first_one_in_left(n));
n=0x100;
printf ("n=0x%x, %d\n", n, calculate_first_one_in_left(n));
n=0x10;
printf ("n=0x%x, %d\n", n, calculate_first_one_in_left(n));
n=0x1;
printf ("n=0x%x, %d\n", n, calculate_first_one_in_left(n));
return 0;
}
[Output]
n=0x1100, 12
n=0x100, 8
n=0x10, 4
n=0x1, 0
沒有留言:
張貼留言