KTL
bits.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <cstdint>
4 
5 namespace ktl::detail
6 {
7  constexpr inline uintmax_t log2(uintmax_t n) noexcept
8  {
9  uintmax_t r = 0;
10 
11  if (n >> 32) { r += 32U; n >>= 32U; }
12  if (n >> 16) { r += 16U; n >>= 16U; }
13  if (n >> 8) { r += 8U; n >>= 8U; }
14  if (n >> 4) { r += 4U; n >>= 4U; }
15  if (n >> 2) { r += 2U; n >>= 2U; }
16  if (n >> 1) { r += 1U; n >>= 1U; }
17 
18  return r;
19  }
20 }
Definition: fallback_fwd.h:23
constexpr uintmax_t log2(uintmax_t n) noexcept
Definition: bits.h:7