找出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);
------其他解决方案--------------------没错,是这样。还有一点这个64位的数怎么表示?BigInteger和BigDecimal分别可以表示多少位?