A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

问题:任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4

这也是一道比较经典的题目了,找工作面试的时候也可能遇到这道题,大家动动脑筋想想有没有比较好的算法。


4 个回复

倒序浏览
定义个数组(长度足够大  可以用宏定义),初始化为0
for循环  用给定的数除分别放入数组中,直到除不尽或者不够除为止,从数组的最后一位开始放(可从头放,然后倒序数组),然后输出数组中不为0的个数.
回复 使用道具 举报
不会,本来想进来看看答案的
回复 使用道具 举报
好吧。。。楼上已经说了
回复 使用道具 举报
lclofty 来自手机 中级黑马 2015-7-22 07:00:02
报纸
是先定义变量存放结果 将二进制数左移或右移 与1按位与 判断结果为1 则变量加一 最后输出变量的值即可
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马