长长的元素数量。

时间:2017-09-14 01:17:50

标签: c++

有没有办法在c ++中获取长整数的元素?例如,我想计算0x993232BF中的元素数,答案应该是8.提前谢谢。

2 个答案:

答案 0 :(得分:1)

int count_nibbles(long long n)
{
    int r=0;
    while(n > 0)
    {
        n >>= 4;
        r++;
    }
    return r;
}

或者如果你喜欢评论中的建议:

int count_nibbles(long long n)
{
   for(; n > 0; n >>= 4) r++;
   return r;
}

答案 1 :(得分:1)

如果您的目标是找到表示数字所需的最小十六进制数字(“半字节”),您可以通过使用对数基数16找到它。更一般地说,您可以找到任何基数所需的位数:

template <std::size_t base>
int count_digits(unsigned long long v) {
    return std::ceil(std::log(static_cast<double>(v) + 1) / std::log(base));
}