在C中计算间隔中二进制数的长度最有效的方法是什么?

时间:2018-11-06 20:07:57

标签: c algorithm

哪种方法比使用蛮力方法更有效的方法来计算二进制数的长度?其实我有这个,但是对于大数字来说它很慢。

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的最接近幂的想法。然后计算相同长度的数字块,最后,计算我剩下的数字。有没有更好的方法?

谢谢。

0 个答案:

没有答案