码迷,mamicode.com
首页 > 其他好文 > 详细

位运算应用

时间:2014-07-22 23:00:13      阅读:336      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   color   strong   

问题描述:

    输入一个整数,返回其二进制表示中最低的一位为1的下标值。

    很多CPU都在硬件层面直接提供该指令,例如,i386的BSF指令。但是,如果硬件没有提供该指令,又当如何。来看kernel中的算法

    应用分治思想进行依序判断.....

mamicode.com,码迷
 1 int __ffs(int x)
 2 {
 3     int r = 0;          //r:用来标记下标,初始化为0。
 4     
 5     if (!x)
 6         return 0;
 7     if (!(x & 0xffff)) {     //即0 1111 1111 1111 1111
 8         x >>= 16;
 9         r += 16;
10     }
11     if (!(x & 0xff)) {      //即0 1111 1111
12         x >>= 8;
13         r += 8;
14     }
15     if (!(x & 0xf)) {       //即0 1111
16         x >>= 4;
17         r += 4;
18     }
19     if (!(x & 3)) {        //0x03————即0011
20         x >>= 2;
21         r += 2;
22     }
23     if (!(x & 1)) {        //0x01
24         x >>= 1;
25         r += 1;
26     }
27     return r;
28 }
mamicode.com,码迷

 

位运算应用,码迷,mamicode.com

位运算应用

标签:style   blog   http   java   color   strong   

原文地址:http://www.cnblogs.com/xymqx/p/3702998.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!