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

더 알아보기 (Learn more)

cppreference