wljyy521 发表于 2012-8-3 22:48:44

计算二进制中‘1’的个数是多少?

我们知道平时我们使用的是10进制数,想知道10进制整数对应的二进制数中‘1’的个数是多少?
比如说 15 对应二进制中‘1’的个数是 4 而255 则是 8个,希望高手给出代码怎么实现,最好不要使用移位运算

hslx111 发表于 2012-8-3 23:23:43

用移位多好- -不用的话,循环除2,余1就个数+1.直到结果为0

wljyy521 发表于 2012-8-3 23:30:36

呵呵{:5_154:}

wljyy521 发表于 2012-8-3 23:39:01

在想想其他的方法啊{:5_156:}

hslx111 发表于 2012-8-3 23:58:34

本帖最后由 hslx111 于 2012-8-3 23:59 编辑

wljyy521 发表于 2012-8-3 23:39 static/image/common/back.gif
在想想其他的方法啊
取巧的方法吗?

uint count_three(uint data)
{
uint count = 0;
while(data)
{
data = data & (data-1);
count++;
}
return count;
}

其实和移位的思想差不多

wljyy521 发表于 2012-8-4 00:25:20

en不错

琳琳 发表于 2012-8-4 06:56:58

除2 取模 接着除 再取模……把模相加
照搬10进制转换成2进制的思想……

hslx111 发表于 2012-8-4 14:42:11

wljyy521 发表于 2012-8-4 00:25 static/image/common/back.gif
en不错

回复的时候最好点下回复,这样能让别人也知道你回他的帖子了

jose 发表于 2012-8-10 14:45:39

移位就是最取巧的了,直接使用机器硬件
页: [1]
查看完整版本: 计算二进制中‘1’的个数是多少?