numeric_bit_width
numeric_bit_width (std::bit_width)
<bit> 헤더에 정의되어 있어요. 값 x를 저장하는 데 필요한 비트 수를 계산해요. 즉 ⌈log₂(x + 1)⌉예요. C++20부터 도입됐어요.
출처: cppreference
본문
template< class T >
constexpr int bit_width( T x ) noexcept;
(C++20부터)
값 x를 저장하는 데 필요한 비트 수를 계산해요. 즉 ⌈log₂(x + 1)⌉이에요.
매개변수
x: 비트 폭을 계산할 값
타입 요구사항
T는 부호 없는 정수 타입이어야 오버로드 해석에 참여해요.
반환값
x가 0이면 0. 그 외에는 x의 2 진 로그에 1을 더하고 소수 부분을 버린 값.
주의 (Notes)
이 함수는 return std::numeric_limits<T>::digits - std::countl_zero(x);와 동등해요.
예제
#include <bit>
#include <iostream>
int main()
{
for (int x : {0, 1, 2, 3, 4, 5, 7, 8, 9})
std::cout << x << " -> " << std::bit_width((unsigned)x) << '\n';
}
출력:
0 -> 0
1 -> 1
2 -> 2
3 -> 2
4 -> 3
5 -> 3
7 -> 3
8 -> 4
9 -> 4
값을 나태내는 데 필요한 정확한 비트 수(왼쪽의 선행 0을 제외한 유효 비트 수)를 구할 때 유용해요.