标签: c++ bit-manipulation
当我尝试这段代码时,它输出0而不是dseried结果,即35
uint64_t er = (uint64_t)1 << 34; cout << ffs(er);
如果不使用34,我使用的是一些小于32的vale,它运行正常,所以我假设我的编译器没有使用正确的ffs,或者ffs不支持所有64位类型?
在这种情况下我该怎么办?我想使用ffs,因为我希望我的代码尽可能快,并且我听说ffs有一个重要的实现。
我在Ubuntu上使用g ++和Xeon处理器
答案 0 :(得分:3)
从ffs() man page,ffs()接受一个int参数。
ffs()
尝试使用ffsll()代替:
int ffsll(long long int i);