비트를 스트림에 기록하는 내부 작업은 WriteBits(uint8_t inData, size_t inBitCount)에서 담당하는데, 바이트 하나를 매개변수로 받아 지정된 비트 수만큼 비트를 추출하여 스트림에 기록한다. 동작 원리를 이해하기 위해 다음 코드가 실행될 때를 가정해 보자.
OutputMemoryBitStream mbs; mbs.WriteBits(13, 5); mbs.WriteBits(52, 6);
이렇게 하면 숫자 13을 5비트 기록한 뒤, 숫자 52의 6비트를 기록한다. 그림 4-3에 이 숫자를 각각 이진수 형태로 그려보았다.
▲ 그림 4-3 13과 52의 이진수 표현