哪种方法比使用蛮力方法更有效的方法来计算二进制数的长度?其实我有这个,但是对于大数字来说它很慢。
int countCiphers(int low, int high) {
int digits = 0;
for (int i = low; i < high+1; ++i)
{
double bits = i == 0 ? 1 : floor(1+log((double)i)/log(2.0));
digits += (int)bits;
}
return digits;
}
我想出了找到最大和最小数字2的最接近幂的想法。然后计算相同长度的数字块,最后,计算我剩下的数字。有没有更好的方法?
谢谢。