Percursos
/
Elixir
Elixir
/
Exercícios
/
Quantidade de Comprimento Variável
Quantidade de Comprimento Variável

Quantidade de Comprimento Variável

Médio

Instruções

Implementa a codificação e descodificação de quantidade de comprimento variável.

O objetivo deste exercício é implementar a codificação/descodificação VLQ.

Em resumo, o objetivo desta codificação é codificar valores inteiros de forma a poupar bytes. Apenas os primeiros 7 bits de cada byte são significativos (alinhados à direita; mais ou menos como um byte ASCII). Por isso, se tiveres um valor de 32 bits, tens de o dividir numa série de bytes de 7 bits. Claro que vais ter um número variável de bytes, dependendo do teu inteiro. Para indicar qual é o último byte da série, deixas o bit n.º 7 a zero. Em todos os bytes anteriores, colocas o bit n.º 7 a um.

Assim, se um inteiro estiver entre 0-127, pode ser representado por um byte. Embora a VLQ consiga lidar com números de tamanhos arbitrários, neste exercício vamo-nos restringir apenas a números que cabem num inteiro sem sinal de 32 bits. Aqui estão exemplos de inteiros como valores de 32 bits e as quantidades de comprimento variável em que se traduzem:

 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
Editar via GitHub A ligação abre numa nova janela ou separador
Elixir Exercism

Estás pronto para começar Quantidade de Comprimento Variável?

Inscreve-te no Exercism para aprenderes e dominares Elixir com 58 conceitos168 exercícios, e mentoria humana real, tudo grátis.