FEATURED · 精选文章

【2016-04-20】一道有意思的面试题

发布时间 / 2026/9/15 9:19:09
来源 / 创域科博编辑部
栏目 / 资讯中心
【2016-04-20】一道有意思的面试题 [历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2016-04-20 标题一道有意思的面试题分类编程 / C C 标签CC一道有意思的面试题最近遇到了一个小测验很有意思这里笔记下。问题如下计算一个unsigned byte里面有多少个“1”。第一想法是使用for循环遍历8个位简单代码如下intget1ofUnByte(unsignedcharx){intcount0;intindex0;for(index0;index8;index){count(x0x1);x1;}returncount;}但是有没有更好的办法呢如果后续需要计算1个unsigned int呢循环32次其实我们可以使用空间换时间的方法intget1ofUnByte(unsignedcharx){conststaticcharnumbers[16]{0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4};returnnumbers[x0xF]numbers[(x4)0xF];}由于1个unsigned byte可以有256个元素使用数组保存会比较麻烦但是我们可以保存半个字节即1个F这样就可以节省大量的空间了。通过这种实现思路在实际工作中我们可以通过代码宏的方式来快速的计算出unsigned byteunsigned int中“1”的个数代码也会更加精炼。有意思吧
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻