计算数据的汉明重量,即数据中“1”的个数,有很多种优化的软件算法。但是,在sse4.2中新增的popcnt指令直接从硬件方面进行优化,在运算速度上比所有的软优化都更胜一筹。
在gcc环境下,sse4.2<nmmintrin.h>——sse4.1<smmintrin.h>——<popcntintrin.h>中可以看到,对函数_mm_popcnt_u32的定义,使用里内建函数__builtin_popcount,即可直接一步实现位1计算。
具体效率比较和环境检测见这篇帖子。http://www.cnblogs.com/zyl910/archive/2012/10/01/zintrin_v101.html