思想
其实也谈不上什么思想,这个题目相对还是简单的。
首先,你得知道怎么判断某位是不是1,这个用模2就可以解决,比如:
其它数字也是如此,因此就可以得出结论:模2为0的,其最低位就是0.反之为1
接下来就是要判断所有比特位的数值了,这个可以用右移操作来实现,直观地说就是不断除2,这样使得要判断的每一个比特位最终都移到最后一位,再用上边的办法判断即可。
最后再加上count计数器,就可以轻松实现1个数的统计了。
而打印比特位就更简单了,只要建立一个数组,初始化为0。每一次判断后将相应位置1,再变换下标记可。
Code
#include<iostream>
#include<Windows.h>
usin