这个问题有啥好的位运算写法?

FancyMouse FancyMouse 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
先写一个我的naive版本:

uint64 transform(uint64 value, uint64 mask)
{
int c = 0;
uint64 result = 0;
for(int i=0, c=0;i<64;i++)
if(mask & (1ull<<i))
result |= ((value>>i) & 1)<<c++;
return result;
}

也就是说,mask提供需要提取的bit掩码,然后把value里掩码出来的bit给压缩到低k位里,k是mask里1的个数。
一个例子是:value: 110011, mask: 010111,那么返回1011
naive的写法人人会写。我的问题是,这个有啥更好的写法吗?比如可以像popcnt一样用log(n)次迭代来代替这里的线性迭代。我不知道这里能不能做类似的事情。
...全文

相关推荐

科技服务机构如何通过数据分析增强服务专业性?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

全国大学生电子设计大赛项目合集全国电赛优秀作品全国大学生电子设计竞赛,简易风洞及控制系统(主控板+供电驱动)工程文件分享

全国大学生电子设计大赛项目合集全国电赛优秀作品全国大学生电子设计竞赛,简易风洞及控制系统(主控板+供电驱动)工程文件分享

zz_ll9023

国央企如何准确把握行业发展趋势,优化创新资源配置,提升核心竞争力?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

利用MATLAB和NASA GMAT实现自动近地轨道传播、地面站可见性和电池EPS分析.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

海神之光

科技服务机构如何借助大数据提升服务客户的精准度?.docx

科技服务机构如何借助大数据提升服务客户的精准度?

BIZKEEN
评论 6
收藏 已收藏
分享
返回顶部
FancyMouse
其它技术问题 3,881 成员 9,044 内容