http://www.matrix67.com/blog/archives/3985

unsigned int v;  // find the number of trailing zeros in 32-bit v
int r;           // result goes here
static const int MultiplyDeBruijnBitPosition[32] =
{
  0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
  31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
};
r = MultiplyDeBruijnBitPosition[((uint32_t)((v & -v) * 0x077CB531U)) >> 27];

http://graphics.stanford.edu/~seander/bithacks.html

最新文章

  1. myeclipse为表生成持久化对象
  2. mybatis组合模糊+分页查询
  3. Ajax请求利用jsonp实现跨域
  4. Python-类的继承
  5. Java-基础练习1
  6. Java 对象的串行化(Serialization)
  7. MapReduce框架Partitioner分区方法
  8. (剑指Offer)面试题27:二叉搜索树与双向链表
  9. 【零基础学习iOS开发】【02-C语言】09-流程控制
  10. HDOJ 2026 首字母变大写
  11. 一、Solr综述
  12. python下使用protobuf
  13. python语言学习9——使用list和tuple
  14. 201521123088《Java程序》第二周总结
  15. scrapy_移除内容中html标签
  16. Linux 通过Shell 查找问题进程 [转]
  17. Mac 系统重新安装的几种方法
  18. Linux 学习笔记之超详细基础linux命令(the end)
  19. docker1.9 network跨主机安装
  20. mysql 转换13位数字毫秒时间

热门文章

  1. geoserver的rest服务介绍,搭建java程序
  2. mysql水平分区
  3. mysql的头文件
  4. 测试用例Excel模板For Quality Center
  5. 并发编程(四)TaskFuture
  6. 类方法 isAssignableFrom、instanceof 和 asSubclass
  7. 3、基本的Get和Post访问(含代理请求)
  8. springmvc 返回汉字乱码
  9. 共享内存system v(未编译)
  10. Android无线调试_adbWireless