1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 16:27:35 +00:00

AK: Add count_required_bits

This commit is contained in:
Tim Schumacher 2023-05-13 20:04:00 +02:00 committed by Andreas Kling
parent 8434d76027
commit d194011570
2 changed files with 24 additions and 0 deletions

View file

@ -150,12 +150,23 @@ inline constexpr int bit_scan_forward(IntType value)
#endif
}
// Counts the minimum number of bits required to represent the value (i.e. ignoring leading null bits).
template<Unsigned IntType>
inline constexpr size_t count_required_bits(IntType value)
{
if (value == 0)
return 1;
return 8 * sizeof(value) - count_leading_zeroes(value);
}
}
#if USING_AK_GLOBALLY
using AK::bit_scan_forward;
using AK::count_leading_zeroes;
using AK::count_leading_zeroes_safe;
using AK::count_required_bits;
using AK::count_trailing_zeroes;
using AK::count_trailing_zeroes_safe;
using AK::popcount;