问题描述
我只知道gcc有很多内置函数,其中一些似乎很有用。
例如,内置函数 __builtin_popcount()
可以计算整数中一个(设置位)的数量。
嗯,我知道不同的编译器可能有不同的内置函数,所以使用 __builtin_popcount()
可能会导致一些可移植性问题。但是如果我们忽略这个问题,那么内置函数和普通的c/c++代码有什么区别呢?你看,我们也可以很容易地编写一段代码来计算整数中一个(设置位)的数量。
int main(void)
{
int i = 5;
std::cout << __builtin_popcount(i) << std::endl;
int j = 5;
std::bitset<32> bits = j;
std::cout << bits.count() << std::endl;
int k = 5;
int counter = 0;
while (k != 0) {
if ((k & 1) == 1) {
counter++;
}
k >>= 1;
}
std::cout << counter << std::endl;
return 0;
}
让我们看看这段代码。我们可以使用 bitset
或一个简单的循环来计算位数,而且我们可以使用内置函数 __builtin_popcount()
来这样做。那么它们之间有什么区别呢?如果我使用内置函数,是否意味着我可以获得更好的性能?我应该在我的普通 c/c++ 项目中使用内置函数吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)