|
给定一个无符号整型数,试完成一个程序, 它求出这个数的二进制最高位是第几位(最低位为0)。例如,十六进制数0xFF,其最高位为第7位
我的程序如下:- int get_bit(int val)
- {
- //mod为模值,sub_val为除2后的值, bit为最高位值,作为返加值, zero_count为当前0的个数
- int mod,sub_val, bit, zero_count;
- if(val <= 0)
- return 0;
- sub_val = val;
- mod = bit = zero_count = 0;
- while(sub_val > 0)
- {
- mod = sub_val % 2;
- sub_val = sub_val / 2;
- if(mod != 0)
- {
- bit += zero_count + 1;
- zero_count = 0;
- }
- else
- {
- zero_count++;
- }
- }
- return bit - 1;
- }
- 结果他说这个程序其实可以再优化的.有些东西是可以不要的,当时我想了很久,各位能帮忙看看吗。
复制代码 |
|