1^{\boldsymbol{\circ}} - Questão Em sistemas que utilizam microcomputadores, cada posição de memória é identificada por um endereço binário. A quantidade de bits do endereço depende do número total de posições de memória disponíveis. Como a representação em binário pode ser muito extensa, é comum utilizar a forma hexadecimal para simplificação. Considere um microcomputador com endereços de 20 bits…
a) (1,0 pontos) Quantas posições de memória distintas podem ser endereçadas?
b) ( 1,0 pontos) Quantos dígitos hexadecimais são necessários para representar um en-dereço desse microcomputador?
c) ( 1,0 pontos) Qual é o endereço da 256^{\mathrm{a}} posição de memória, em binário? (Considere que o primeiro endereço corresponde a 0 ).
Passo 1
O enunciado dá que os endereços têm 20 bits e pede três coisas:
(a) Quantas posições de memória distintas podem ser endereçadas?
(b) Quantos dígitos hexadecimais são necessários para representar um endereço desse microcomputador?
(c) Qual é o endereço da 256^{\mathrm{a}} posição de memória, em binário, sabendo que o primeiro endereço corresponde a 0?
Também fica explícito que usamos representação binária de 20 bits para cada endereço.
Passo 2
Entendendo a parte (a): cada bit do endereço pode assumir 2 valores (0 ou 1). Se temos n bits, o número total de combinações possíveis (portanto de endereços distintos) é
2^n.
Aqui n=20, então o total de posições endereçáveis é
2^{20}.
Explicação extra (pra fixar): uma maneira rápida de calcular 2^{20} sem calculadora é usar 2^{10}=1024 e observar que
2^{20}=(2^{10})^2=1024^2.
Calcule 1024^2 fazendo 1024\cdot1024=(1000+24)^2=1000000+2\cdot1000\cdot24+24^2=1000000+48000+576=1048576.
Logo 2^{20}=1048576.
Resposta parcial para (a) (já com o raciocínio): o número de posições distintas é \;2^{20}=1048576.
Passo 3
Agora a parte (b): relação entre bits e dígitos hexadecimais. Cada dígito hexadecimal representa exatamente 4 bits, porque o sistema hexadecimal tem 16 símbolos (0 a F) e 16=2^4. Assim, para saber quantos dígitos hexadecimais precisamos para cobrir 20 bits, dividimos 20 por 4:
\frac{20}{4}=5.
Como 20 é múltiplo de 4, não há sobra: são exatamente 5 dígitos hexadecimais.
Comentário prático para fixar (ligando com o máximo endereço): o maior endereço possível com 20 bits é 2^{20}-1. Em binário isso é vinte uns: \underbrace{111\ldots111}_{20\text{ vezes}}. Agrupando em nibble (grupos de 4 bits) isso dá 5 grupos de 1111, e cada 1111 em hex é F. Logo o maior endereço em hex é \mathrm{FFFFF} (5 dígitos), confirmando que precisamos de 5 dígitos hexadecimais.
Passo 4
Parte (c): identificar o que significa "a 256^{\mathrm{a}} posição, com primeiro endereço 0". Se a primeira posição (posição 1) corresponde a endereço 0, então a posição k corresponde ao endereço k-1. Para k=256 temos endereço
256-1=255.
Agora converter 255 para binário. Uma observação rápida: 255=2^8-1, portanto em binário são oito uns consecutivos:
255 = 11111111_2.
Mas como o microcomputador usa endereços de 20 bits, devemos escrever esse endereço com 20 bits, acrescentando zeros à esquerda até completar 20 bits. Temos 20-8=12 zeros à esquerda. Assim o endereço em binário com 20 bits é
00000000000011111111.
Verificação rápida por soma de potências (pra você sentir segurança): 11111111_2 corresponde a 2^7+2^6+\cdots+2^0 = 128+64+32+16+8+4+2+1=255. Acrescentando os 12 zeros à esquerda não altera o valor, só normaliza para o tamanho de 20 bits exigido.