numeric_countr_one
numeric_countr_one (최하위 비트부터 연속 1 비트 개수)
std::countr_one은 x의 값에서 최하위 비트("오른쪽")부터 시작해 연속된 1 비트가 몇 개인지 세는 함수예요. C++20부터 사용할 수 있어요.
출처: cppreference
본문
<bit> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.
template< class T >
constexpr int countr_one( T x ) noexcept;
(since C++20)
x의 값에서 최하위 비트부터 시작해 연속된 1 비트의 개수를 반환해요.
매개변수 (Parameters)
- x — 비트를 셀 값
타입 요구사항 (Type requirements)
- T — 오버로드 해석에 참여하려면 부호 없는 정수 타입이어야 해요.
반환값 (Return value)
x의 값에서 최하위 비트부터 시작한 연속 1 비트의 개수예요.
참고 (Notes)
| 피처 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_bitops |
201907L | (C++20) | 비트 연산 |
예제 (Example)
이 코드를 실행해 봐요.
#include <bit>
#include <bitset>
#include <cstdint>
#include <iostream>
int main()
{
for (const std::uint8_t i : {0, 0b11111111, 0b11111110, 0b11100011})
std::cout << "countr_one( " << std::bitset<8>(i) << " ) = "
<< std::countr_one(i) << '\n';
}
출력:
countr_one( 00000000 ) = 0
countr_one( 11111111 ) = 8
countr_one( 11111110 ) = 0
countr_one( 11100011 ) = 2