numeric_countl_one

numeric_countl_one (최상위 비트부터 연속 1 비트 개수)

std::countl_one은 x의 값에서 최상위 비트("왼쪽")부터 시작해 연속된 1("one") 비트가 몇 개인지 세는 함수예요. C++20부터 사용할 수 있어요.

출처: cppreference

본문

<bit> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.

template< class T >
constexpr int countl_one( T x ) noexcept;

(since C++20)

x의 값에서 최상위 비트부터 시작해 연속된 1 비트의 개수를 반환해요.

매개변수 (Parameters)

  • x — 1 비트를 셀 값

타입 요구사항 (Type requirements)

  • T — 오버로드 해석에 참여하려면 부호 없는 정수 타입이어야 해요 (즉 unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long, 또는 확장 부호 없는 정수 타입).

반환값 (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, 0b01111111, 0b11100011})
        std::cout << "countl_one( " << std::bitset<8>(i) << " ) = "
                  << std::countl_one(i) << '\n';
}

출력:

countl_one( 00000000 ) = 0
countl_one( 11111111 ) = 8
countl_one( 01111111 ) = 0
countl_one( 11100011 ) = 3

더 알아보기 (Learn more)

cppreference