@ctz

@ctz

도입 @ctz는 정수(integer) 또는 정수 벡터에서 trailing zero(최하위 비트부터 이어진 0의 개수)를 세는 내장 함수(Builtin)예요. 비트 연산 최적화나 저수준 구현에서 자주 쓰이죠.

출처: Zig Documentation

본문

@ctz(operand: anytype) anytype

@TypeOf(operand)는 정수 타입(Integer Type)이거나 정수 벡터 타입이어야 해요.

operand정수 또는 벡터가 될 수 있어요.

정수에서 최하위 비트(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를 쓰면 돼요.