Convert the following string of binary digits into a string of hexadecimal digits:
10101111101010111100101010110100110110101101

Passo 1

O enunciado pede para converter a seguinte sequência de dígitos binários em dígitos hexadecimais (peguei a sequência do enunciado):
10101111101010111100101010110100110110101101.
Informações relevantes fornecidas:
  • A sequência binária é exatamente a string acima.
  • Não há indicação de letras maiúsculas/minúsculas para a resposta em hexadecimal; usarei maiúsculas para as letras hexadecimais.
  • Não foi pedida nenhuma formatação especial além da conversão.

Passo 2

Conceito-chave que vamos usar (explicação didática):
  • O sistema hexadecimal tem base 16. Cada dígito hexadecimal representa um valor de 0 a 15.
  • O sistema binário tem base 2. Valores binários são somas de potências de 2.
  • Importante: 16 = 2^{4}. Isso significa que cada dígito hexadecimal corresponde exatamente a um grupo de 4 bits (um “nibble”). Por isso, a maneira mais prática de converter binário para hexadecimal é:
    1. dividir a sequência binária em grupos de 4 bits (começando da direita; ou da esquerda se o total já for múltiplo de 4),
    2. converter cada grupo de 4 bits para o seu valor decimal entre 0 e 15,
    3. traduzir esse valor decimal para o dígito hexadecimal (valores 10 15 viram A F).
  • Se o número total de bits não for múltiplo de 4, adiciona-se zeros à esquerda até completar um grupo de 4. Neste problema veremos se isso é necessário.

Passo 3

Contar quantos bits há e decidir sobre padding:
  • A sequência tem 44 bits (contando os caracteres da string).
  • Como 44 é múltiplo de 4 ( 44 = 11\cdot4), não é necessário adicionar zeros à esquerda. Podemos dividir em exatamente 11 grupos de 4 bits.

Passo 4

Agrupar a sequência em nibbles de 4 bits (faço a divisão da esquerda para a direita porque o total já é múltiplo de 4). Os grupos são:
\begin{array}{l} \;1010\\\ \;1111\\\ \;1010\\\ \;1011\\\ \;1100\\\ \;1010\\\ \;1011\\\ \;0100\\\ \;1101\\\ \;1010\\\ \;1101 \end{array}

Passo 5

Como converter cada nibble para hexadecimal — explicando bem devagar (a técnica que serve para a prova):
  • Para um nibble b_3 b_2 b_1 b_0 em binário, o valor decimal é
b_3\cdot 2^{3} + b_2\cdot 2^{2} + b_1\cdot 2^{1} + b_0\cdot 2^{0}.
  • Depois de obter o decimal entre 0 e 15, usa-se a tabela:
    • 10\to A,\;11\to B,\;12\to C,\;13\to D,\;14\to E,\;15\to F.
      Agora converto cada nibble passo a passo, mostrando a soma das potências de 2:
  1. 1010: 1\cdot2^{3}+0\cdot2^{2}+1\cdot2^{1}+0\cdot2^{0}=8+0+2+0=10\\ \Rightarrow\\ \text{hex }A.
  2. 1111: 1\cdot2^{3}+1\cdot2^{2}+1\cdot2^{1}+1\cdot2^{0}=8+4+2+1=15\\ \Rightarrow\\ \text{hex }F.
  3. 1010: (mesmo que 1)) \Rightarrow hex A.
  4. 1011: 1\cdot2^{3}+0\cdot2^{2}+1\cdot2^{1}+1\cdot2^{0}=8+0+2+1=11\\ \Rightarrow\\ \text{hex }B.
  5. 1100: 1\cdot2^{3}+1\cdot2^{2}+0\cdot2^{1}+0\cdot2^{0}=8+4+0+0=12\\ \Rightarrow\\ \text{hex }C.
  6. 1010: (como antes) \Rightarrow hex A.
  7. 1011: (como no item 4) \Rightarrow hex B.
  8. 0100: 0\cdot2^{3}+1\cdot2^{2}+0\cdot2^{1}+0\cdot2^{0}=0+4+0+0=4\\ \Rightarrow\\ \text{hex }4.
  9. 1101: 1\cdot2^{3}+1\cdot2^{2}+0\cdot2^{1}+1\cdot2^{0}=8+4+0+1=13\\ \Rightarrow\\ \text{hex }D.
  10. 1010: (como antes) \Rightarrow hex A.
  11. 1101: (como no item 9) \Rightarrow hex D.

Passo 6

Resumo do mapeamento nibble → hexadecimal (cada linha corresponde a um dos grupos, na mesma ordem):
1010\to A,\quad 1111\to F,\quad 1010\to A,\quad 1011\to B,\quad 1100\to C,
1010\to A,\quad 1011\to B,\quad 0100\to 4,\quad 1101\to D,\quad 1010\to A,\quad 1101\to D.

Resposta

AFABCAB4DAD

Exercícios relacionados