首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >__builtin_popcount --这在C#中是等价的吗?

__builtin_popcount --这在C#中是等价的吗?
EN

Stack Overflow用户
提问于 2014-11-19 05:24:20
回答 1查看 1K关注 0票数 1

https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

内置函数: int __builtin_popcount (无符号int x)返回x中的1位数.

因此,为了做同样的事情,我在c#中尝试了以下代码

代码语言:javascript
运行
复制
        long l8 = 9;
        int iCont = Convert.ToString(l8, 2).Split('0').ToList().FindAll(x=>x=="1").Count;

我想在堆栈溢出中重复检查这个问题,如果这是错误的,我所做的或者有任何内置的函数做同样的事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-19 05:47:23

不,它不是。它将在二进制表示中包含相邻1s的任何数字上失败,因为它们将在Split('0')之后以一个字符串的形式在一起,因此与(x => x == "1")不匹配。举个例子,试试3。

因为string实现了IEnumerable<char>,所以您可以在直接查看字符时使用与您类似的想法:

Convert.ToString(l8, 2).Count(c => c == '1')

当然还有其他的cleverer solutions

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27009570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档