합해서128개를 고르는 두 규칙을, 하나로 줄일 수 있을까요? 네트워크 주소를 묶는 접두부 표기에서 착안해, 0과 1로 된 여덟 자리 번호를 종이에 놓을게요. 실제 네트워크 설정이나 사용할 수 있는 장치 수를 판단하는 활동은 아니에요.
규칙 하나는 맨 앞 k자리만 고정하고, 뒤의 8−k자리는 모두 자유롭게 둬요. k는 0부터 8까지의 정수예요. x는 각 자리에서 0 또는 1이라는 뜻이에요. 중간 자리만 고정하거나 별도의 제외 규칙을 붙일 수는 없어요. 00xxxxxx와 10xxxxxx가 고르는 번호를 정확히 유지하면서 한 규칙으로 줄여 볼까요?
여덟 자리를 이진수로 읽어요. 오른쪽 여섯 자리의 값은 0부터 63까지이고, 맨 왼쪽 1의 자리값은 128입니다. n(S)는 집합 S의 원소 수예요.
두 집합은 겹치지 않아 합하면128개예요. 앞 k자리를 고정한 규칙이 고르는 집합을 Pₖ라 해 볼까요? 자유로운 각 자리는 두 가지이므로,
128개를 정확히 고르려면 k=1이어야 해요. 하지만 0xxxxxxx는0~127을, 1xxxxxxx는128~255를 골라요. 앞 규칙은64를 더하고128을 빼며, 뒤 규칙은0을 빼고192를 더해요. 어느 쪽도 S가 아니에요. k=0이면256개, k≥2이면64개 이하라서도 안 돼요. 따라서 원래 두 규칙이 필요해요.
x0xxxxxx라 쓰면 같은 S를 고르지만, 첫 자리를 자유롭게 둔 채 둘째만 고정하므로 허용된 규칙이 아니에요. 이번에는 두 번째 목록의 시작을10에서01로 바꿔 볼게요. 00xxxxxx와01xxxxxx는0~127을 채워0xxxxxxx 하나로 합쳐져요. 번호 수128은 같아도, 어느 번호를 포함하는지가 합치기 가능성을 결정해요.
착안: RFC Editor·IETF, RFC4632 §3.1, 2006년8월. 알려진 앞자리 표기 규칙을 바탕으로 번호 목록과 대조 활동을 자체 구성했어요.
