这个问题有啥好的位运算写法?
先写一个我的naive版本:
也就是说,mask提供需要提取的bit掩码,然后把value里掩码出来的bit给压缩到低k位里,k是mask里1的个数。
一个例子是:value: 110011, mask: 010111,那么返回1011
naive的写法人人会写。我的问题是,这个有啥更好的写法吗?比如可以像popcnt一样用log(n)次迭代来代替这里的线性迭代。我不知道这里能不能做类似的事情。
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+数智化解决方案,推动科技创新与产业创新智能化发展。
全国大学生电子设计大赛项目合集全国电赛优秀作品全国大学生电子设计竞赛,简易风洞及控制系统(主控板+供电驱动)工程文件分享
全国大学生电子设计大赛项目合集全国电赛优秀作品全国大学生电子设计竞赛,简易风洞及控制系统(主控板+供电驱动)工程文件分享
国央企如何准确把握行业发展趋势,优化创新资源配置,提升核心竞争力?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
利用MATLAB和NASA GMAT实现自动近地轨道传播、地面站可见性和电池EPS分析.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
科技服务机构如何借助大数据提升服务客户的精准度?.docx
科技服务机构如何借助大数据提升服务客户的精准度?


其它技术问题
