博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《c程序设计语言》-2.9
阅读量:6230 次
发布时间:2019-06-21

本文共 695 字,大约阅读时间需要 2 分钟。

#include 
/*int bitcount(unsigned x){ int b; for(b = 0;x != 0;x >>= 1) { if(x & 1) b++; } return b; }*/int bitcount(unsigned x){ int b; for (b = 0; x != 0; x &= (x-1)) b++; return b;}int main(void){ unsigned x = 255; printf("%u,%d\n",x,bitcount(x)); return 0;}

解题思路:对于x的二进制形式,分为两种:最右边二进制位为0和最右边二进制位为1 

  1. 如果x的形式如XXX1, 那么x & (x-1)应该为 XXX0 & XXX1 = XXX0。 例如: 110_100_101 & 110_100_100 = 110_100_100。最右边的1被删除。
  2. 如果x的形式如XX10..00, 那么x & (x-1)应该为 XX01..11 & XX10..00 = XX00..00例如: 110_100_100 & 110_100_011 = 110_100_000。最右边的1被删除。

文字转载自: http://www.cnblogs.com/ningvsban/p/3781210.html

 

转载于:https://www.cnblogs.com/batteryhp/p/5020472.html

你可能感兴趣的文章
ffmpeg解码RTSP/TCP视频流H.264(QT界面显示视频画面)
查看>>
深度学习入门:投身深度学习你需要哪些准备?
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
医疗数据难获得,人工智能医疗发展遭遇瓶颈期
查看>>
数据集成服务破解SaaS集成难题
查看>>
【云栖大会】阿里云和红帽达成合作为百万级客户提供更多企业级解决方案
查看>>
GNU Chess
查看>>
漂亮的字体组合的秘密
查看>>
免费高品质的纹理素材网站
查看>>
《Linux From Scratch》第一部分:介绍 第一章:介绍-1.1 如何构建LFS系统
查看>>
Sketch的过去现在和未来
查看>>
TableEdit UI_10
查看>>
[译] 通知是一种「暗模式」吗?
查看>>
企业在云迁移过程中需解决常见的IP地址问题
查看>>
AWS 张侠:为企业创新和转型提供助力
查看>>
阿里云王坚:运营才能缔造真正的云计算
查看>>
远程数据库的表超过20个索引的影响
查看>>
__attribute__ ((packed)) 的作用
查看>>
【Django】CentOS7安装Django笔记
查看>>
《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.71. 再次清理无用内容...
查看>>