回复:字节里面有多少个1?问过这个问题的都来签个名。

已锁定

锋言锋语

西门子1847工业学习平台

  • 帖子

    3942
  • 精华

    54
  • 被关注

    130

论坛等级:至圣

注册时间:2011-07-31

钻石 钻石 如何晋级?

发布于 2020-11-16 21:02:35

7楼

这个问题据说是华为还是哪个公司的面试题, 
m是一个32位整数;


  1.   奇数位右移1, 和 偶数位的值相加, 得到每两位的1的个数的分布;

      m = (m & 0xAAAAAAAA) >> 1+ (m & 0x55555555);

  2. 按每两位分组, 奇数组右移2, 和 偶数组的值相加, 得到每四位1的分布;

     m = (m & 0x CCCCCCCC)  >> 2 + (m & 0x33333333);

  3. 按每四位分组, 奇数组右移4, 和偶数组相加, 得到每8为位1的分布;

    m = (m & F0F0F0F)) >> 4 + (m & 0x0F0F0F0F0F);

     4.每8??位 分组, 奇数组右移动8, 和偶数组相加, 得到每16位1的分布

        m = m ( & FF00FF00) >> 8 + (m & 0x00FF00FF);

     5.

      m的高低字相加, 就是m的1的个数;

不忘初心
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8940条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。