嘛,现代CPU都是直接有指令可以计算的,应该是最快的了吧
#include <stdio.h>
int main(){
int a=13;
register int ax __asm__("%eax");
__asm__("POPCNT EAX,%0"::"r"(a));
printf("%d\n",ax);
}
或者定义成函数
int bincount(int x){
__asm__("POPCNT EAX,ECX\n");
//因为gcc第一个参数放在CX里面,返回值是AX,所以这里也不需要return
}