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