我们知道平时我们使用的是10进制数,想知道10进制整数对应的二进制数中‘1’的个数是多少?
比如说 15 对应二进制中‘1’的个数是 4 而255 则是 8个,希望高手给出代码怎么实现,最好不要使用移位运算
共收到 8 条回复
hslx111 · #2 · 2012-8-3 23:23:43  回复 支持 反对
用移位多好- -不用的话,循环除2,余1就个数+1.直到结果为0
wljyy521 · #3 · 2012-8-3 23:30:36  回复 支持 反对
呵呵
wljyy521 · #4 · 2012-8-3 23:39:01  回复 支持 反对
在想想其他的方法啊

点评

取巧的方法吗?  详情 回复 发表于 2012-8-3 23:58
hslx111 · #5 · 2012-8-3 23:58:34  回复 支持 反对
本帖最后由 hslx111 于 2012-8-3 23:59 编辑
wljyy521 发表于 2012-8-3 23:39
在想想其他的方法啊

取巧的方法吗?
[C++] 纯文本查看 复制代码
uint count_three(uint data) 
{
 uint count = 0;
 while(data)
 {
  data = data & (data-1);
  count++;
 }
 return count;
}

其实和移位的思想差不多
wljyy521 · #6 · 2012-8-4 00:25:20  回复 支持 反对
en  不错

点评

回复的时候最好点下回复,这样能让别人也知道你回他的帖子了  详情 回复 发表于 2012-8-4 14:42
琳琳 · #7 · 2012-8-4 06:56:58  回复 支持 反对
除2 取模 接着除 再取模……把模相加
照搬10进制转换成2进制的思想……
hslx111 · #8 · 2012-8-4 14:42:11  回复 支持 反对
wljyy521 发表于 2012-8-4 00:25
en  不错

回复的时候最好点下回复,这样能让别人也知道你回他的帖子了
jose · #9 · 2012-8-10 14:45:39  回复 支持 反对
移位就是最取巧的了,直接使用机器硬件
回帖
B Color Image Link Quote Code Smilies
Command + Enter
快速回复 返回顶部 返回列表