题1.  给定一个无符号整型数据(unsigned int),找出其对应二进制数据中bit位为1的最高/低索引。

  比如:对于数据0,返回0;数据1,返回1;数据0x80000000,返回32;

题2.  给定一个无符号64bit整型数据(unsigned long long int),找出其对应二进制数据中bit位为1的最高/低索引。

  比如:对于数据0,返回0;数据1,返回1;数据0x4000000000000000,返回63;  

题3.  给定一个无符号长整型数据(unsigned long int),找出其对应二进制数据中bit位为1的最高/低索引。

>对于题1:

/*
  方法一:二分法
*/
int fls(unsigned int x)
{
int r=;
if(!x)
return ;
if(!(x&0xffff0000u)){
x<<=;
r-=;
}
if(!(x&0xff000000u)){
x<<=;
r-=;
}
if(!(x&0xf0000000UL)){
x<<=;
r-=;
}
if(!(x&0xc0000000UL)){
x<<=;
r-=;
}
if(!(x&0x80000000UL)){
x<<=;
r-=;
}
return r;
}
/*
  方法二:遍历法
*/
int fls(unsigned int x)
{
    int i,pos=0;
    for(i=1;i<=32;++i){
        if(x&0x1)
            pos=i;
        x>>=1;
    }
    return pos;
}

>对于题2:

  unsigned long long int为64bit数据,借助题1实现

int fls_64(unsigned long long int x)
{
unsigned int _x= x>>;
if(_x)
return fls(_x)+;
return fls(x);
}

>对于题3:

  由于unsigned long int类型的size会根据编译器的不同而不同,所以应该考虑无符号长整型为8byte和4byte的情况。总和题1/2

int fls_long(unsigned long int x)
{
    if (sizeof(x) == 4)
        return fls(x);
    return fls_64(x);
}

欢迎大家批评指正  |;-)

最新文章

  1. 修改USB固件库的Customer_HID例程
  2. html5实现摇一摇功能
  3. HttpClient示例
  4. iOS项目立项
  5. php pdo分页
  6. java面向对象编程--第九章 多态和抽象
  7. 右键菜单添加程序,指定图标, Notepad2、Sublime Text 2
  8. [Hapi.js] Replying to Requests
  9. eclipse 异常Unhandled event loop exception
  10. es6语法
  11. 对于mariadb安装后可以默认使用无密码登录的问题解决方案
  12. dubbo负载均衡策略及对应源码分析
  13. Python - 使用objgraph生成对象引用关系图
  14. mysql使用自增Id为什么存储比较快
  15. Codeforces Round #349 (Div. 1)E. Forensic Examination
  16. Linux命令中:rsync和cp之间的区别
  17. PhotoShop CS6 在2K屏幕下标题菜单等字体太小
  18. C++11 long long使用及输出
  19. 转载 URL短地址压缩算法
  20. chrome不能用百度网盘极速上传插件的解决办法

热门文章

  1. 单片机模块化程序: 单片机加入JSON是个不错的选择
  2. SQLSERVER获取数据库中的所有表的名称、表中所有字段的属性
  3. FPGA综合的约束
  4. mac 以多tab的方式打开
  5. Spark 部署即提交模式意义解析
  6. nginx 访问控制之 document_uri
  7. nginx rewrite实战实例
  8. GET /static/css/bootstrap.min.css.map HTTP/1.1&quot; 404
  9. Web Components 入门实例教程
  10. python 项目实战之装饰器