ffs的另外一种实现方法

原创 2013年12月03日 14:12:30

 kernel中有个宏ffs,是用于从一个数中找出第一个为1的位(由低到高),为了提高效率,用了汇编指令实现。

static inline int fls(int x)
{
	int ret;

	if (__builtin_constant_p(x))
	       return constant_fls(x);

	asm("clz\t%0, %1" : "=r" (ret) : "r" (x));
       	ret = 32 - ret;
	return ret;
}

#define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); })


 

 

在其它应用中,由于不需要考虑效率问题,可以采用其他方式实现:

 

#define ffs(x) ({\
	unsigned long i = 0;\
	if(x == 0)\
		i = 32;\
	else {\
		while((x & (1<<i)) == 0)\
		{\
			i ++;\
		}\
		i++;\
	    }\
	i;})


 

Linux ffs()函数

Linux ffs()函数    ffs()函数用于查找一个整数中的第一个置位值(也就是bit为1的位)。    函数原型:    #include    int ffs(int i)...
  • chenglinhust
  • chenglinhust
  • 2013年04月21日 11:05
  • 4688

【转载】Inno Setup入门(十九)——Inno Setup类参考(5)

单选按钮 单选按钮在安装中也很常见,例如同一个程序可以选择安装不同的性质的功能,例如选择32位或者64位等,两者是排他性的,因此可以通过单选按钮(RadioButton)来实现,在同一个容器中放置的...
  • u013059441
  • u013059441
  • 2017年03月08日 11:48
  • 77

【Hello World】的另外一种实现方法

#include#include void fun(void) /* 此函数没地方调用过 */{ printf("Hello World/n"); exit(0);}int main(int argc...
  • eaglewood2005
  • eaglewood2005
  • 2009年05月07日 16:55
  • 536

反射的另外一种方法

T instance = default(T); Type type = typeof(T); System.Reflection.Constructo...
  • yezicjj
  • yezicjj
  • 2013年04月11日 09:39
  • 448

另外一种写法如下:

 // 非递归写法  int func(int n)  {      int count = 0;      while(n > 1)      {          if(...
  • chuyue369
  • chuyue369
  • 2017年12月12日 20:06
  • 42

用JAVA实现一种排序,JAVA类实现序列化的方法(二种)? 如在COLLECTION框架中,实现比较要实现什么样的接

importjava.util.*; public class test{ ArrayList al; public test(int num, intmod) { al = ...
  • IT_COOKIE_SAM
  • IT_COOKIE_SAM
  • 2016年12月13日 10:56
  • 1033

慢查询日志的另外一种方法

前言:前几天介绍了通过工具mysqldumpslow分析慢查询日志的方法,随着工作的进展又发现了另外一个更加好用的方法:把慢日志记录到mysql数据库中。   方法介绍:通过设置参...
  • sd4015700
  • sd4015700
  • 2015年12月18日 12:41
  • 274

DEBUG的另外一种方法

Steps 1. Create variant called BACKGROUND for program(ZWBTEST) to be debugged. 2. Execute ZDEBUGBG (...
  • fei2115958
  • fei2115958
  • 2011年01月05日 14:11
  • 205

指数函数的另外一种实现

一般情况下,指数函数pow(n,m)的一种较为简单的实现为public long myPow(int n, int m){ long value = 1; whi...
  • benma378
  • benma378
  • 2013年04月14日 23:05
  • 1176

《人工智能:一种现代的方法》总结 第二章

第二章 智能Agent 这一章主要讨论了Agent的各个方面,给读者一个初步的了解。...
  • AchildFromBUAA
  • AchildFromBUAA
  • 2017年03月27日 22:56
  • 604
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ffs的另外一种实现方法
举报原因:
原因补充:

(最多只允许输入30个字)