计算一个32位整数的二进制形式中1的个数。

计算一个32位整数的二进制形式中1的个数。有谁知道啊,说说答案,感激不尽啊。... 计算一个32位整数的二进制形式中1的个数。有谁知道啊,说说答案,感激不尽啊。 展开
 我来答
歪鼻木熊
2007-07-19 · TA获得超过458个赞
知道小有建树答主
回答量:305
采纳率:0%
帮助的人:431万
展开全部
用javascript给你写个吧(下面代码直接存成test.htm运行即可):
------------------------
<script language=javascript>
function num(n) {
var k = 0;
for (var i = 0; i < 32; i ++) {
if ((n & (1<<i)) > 0) {
k ++;
}
}
return k;
}
document.write(num(123456))
</script>
<hr>
验证: 123456的二进制码是: 11110001001000000, 共6个1.
------------------------

说明:

函数num(n), 传入一个数字, 返回1的个数.

document.write(num(123456))

验证:

其中的123456可以是任意数字, 可以改成别的, 然后先用计算器转换成二进制, 数一下1的个数, 再和这里返回的结果核对.

重点:

其中最重要的一句是: n & (1 << i)

1 << i, 是把1按位左移几位, 移一位, 即变成二进制的10(也就是2), 右起第二位是1; 移两位就变成100(也就是4), 右起第三位是1...

然后用这个数和指定的n按位"与", 如果结果非零, 则表示该位上是1.
永远有多远2024
2007-07-19 · TA获得超过147个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:243万
展开全部
第一种方法:用XP自带的计算器选用科学型模式,输入32位整数然后转换成2进制,数一下就可以了.

第二种方法:编程,利用10转2原理 (32位整数用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果就2进制数)累计一下1个个数.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式