트랙
/
Elixir
Elixir
/
연습 문제
/
가변 길이 수량
가변 길이 수량

가변 길이 수량

보통

지침

가변 길이 수량 인코딩과 디코딩을 구현해요.

이 연습 문제의 목표는 VLQ 인코딩과 디코딩을 구현하는 거예요.

간단히 말해, 이 인코딩의 목표는 바이트를 절약하는 방식으로 정수 값을 인코딩하는 거예요. 각 바이트에서 처음 7비트만 의미가 있어요(오른쪽으로 정렬되고, 어쩐지 ASCII 바이트와 비슷하죠). 그래서 32비트 값이 있다면, 그 값을 7비트 바이트 여러 개로 풀어내야 해요. 물론 정수에 따라 바이트 개수는 달라져요. 여러 바이트 가운데 어느 것이 마지막인지 나타내려면, 7번 비트를 0으로 남겨 둬요. 앞에 오는 모든 바이트에서는 7번 비트를 1로 설정해요.

따라서 정수가 0-127 사이에 있다면, 한 바이트로 표현할 수 있어요. VLQ는 임의 크기의 수를 다룰 수 있지만, 이 연습 문제에서는 32비트 부호 없는 정수에 들어가는 수만 다루기로 해요. 다음은 32비트 값으로 표현한 정수와, 그에 대응하는 가변 길이 수량의 예예요:

 NUMBER        VARIABLE QUANTITY
00000000              00
00000040              40
0000007F              7F
00000080             81 00
00002000             C0 00
00003FFF             FF 7F
00004000           81 80 00
00100000           C0 80 00
001FFFFF           FF FF 7F
00200000          81 80 80 00
08000000          C0 80 80 00
0FFFFFFF          FF FF FF 7F
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Elixir Exercism

가변 길이 수량 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Elixir 트랙을 개념 58개연습 문제 168개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.