numeric_bit_floor
numeric_bit_floor (std::bit_floor)
<bit> 헤더에 정의되어 있어요. x가 0이 아니면 x보다 크지 않은 가장 큰 정수 2의 거듭제곱을 계산해요. x가 0이면 0을 돌려줘요. C++20부터 도입됐어요.
출처: cppreference
본문
template< class T >
constexpr T bit_floor( T x ) noexcept;
(C++20부터)
x가 0이 아니면 x보다 크지 않은 가장 큰 정수 2의 거듭제곱을 계산해요. x가 0이면 0을 돌려줘요.
매개변수
x: 비교할 값
타입 요구사항
T는 부호 없는 정수 타입(즉unsigned char,unsigned short,unsigned int,unsigned long,unsigned long long)이어야 해요.
예제
#include <bit>
#include <iostream>
int main()
{
for (int x : {0, 1, 2, 3, 4, 5, 8, 9, 16})
std::cout << x << " -> " << std::bit_floor((unsigned)x) << '\n';
}
출력:
0 -> 0
1 -> 1
2 -> 2
3 -> 2
4 -> 4
5 -> 4
8 -> 8
9 -> 8
16 -> 16
2의 거듭제곱으로 내림하고 싶을 때 유용해요. bit_ceil과 짝을 이뤄 크기를 2의 거듭제곱으로 반올림·버림할 때 쓰여요.