@ctz
@ctz
도입
@ctz는 정수(integer) 또는 정수 벡터에서 trailing zero(최하위 비트부터 이어진 0의 개수)를 세는 내장 함수(Builtin)예요. 비트 연산 최적화나 저수준 구현에서 자주 쓰이죠.
본문
@ctz(operand: anytype) anytype
@TypeOf(operand)는 정수 타입(Integer Type)이거나 정수 벡터 타입이어야 해요.
정수에서 최하위 비트(least-significant bit) 쪽으로 이어진 0의 개수, 다시 말해 big-endian 관점에서 trailing zero의 개수를 세어요. 흔히 "count trailing zeroes"라고 부르죠.
반환 타입은 해당 정수 타입의 비트 개수를 표현할 수 있는 최소 비트 수를 가진 부호 없는 정수(Unsigned Integer) 또는 부호 없는 정수 벡터예요.
만약 operand가 0이라면, @ctz는 정수 타입 T의 비트 폭(bit width)을 반환해요.
See also:
더 알아보기 (Learn more)
@ctz가 세는 건 최하위 비트부터 이어진 0의 개수예요. 반대 방향(최상위 비트부터)을 세는 건@clz가 담당해요.- 0을 넣으면 해당 정수 타입의 전체 비트 폭을 돌려준다는 점을 기억해 두세요.
- 전체 1비트의 개수를 세고 싶다면
@popCount를 쓰면 돼요.