日期:2014-05-20  浏览次数:20972 次

找出64位整数的二进制中1的个数
这个题怎么做?
看了很多,可就是没看明白。
怎么表示一个64位的十进制整数?
具体怎么实现找到转换后的二进制中1的个数?
------最佳解决方案--------------------
BigInteger 理论上可以表示无穷位。

其实我理解所谓64位的数,也许不是指 十进制有64个数字;
估计是表示 64位二进制数,那么long就是64位的,当然符号位会浪费 1位,剩63位。
------其他解决方案--------------------
偷懒就用 BigInteger

toString(2) 就可以得到完整二进制
------其他解决方案--------------------
反复除2取余数
------其他解决方案--------------------
我想用自己写算法来实现。如果要用别人的,java中有将十进制转二进制的方法,然后再查找二进制中1的个数,确实可以。
想了解一下实现原理,
------其他解决方案--------------------
试试这个.

long num=10000000L;
int total=Long.bitCount(num);

------其他解决方案--------------------
引用:
反复除2取余数
没错,是这样。还有一点这个64位的数怎么表示?BigInteger和BigDecimal分别可以表示多少位?