Considere que 0xABCD, 0b1011_1010_1100_0001 e 0b0100010100111110 estão armazenados em big-endian. Como é sua representação em little-endian?
(a) 0xB3D5, 0b1000_0011_0101_1101 e 0b0111110010100010
(b) 0 xCDAB, Ob1100_0001_1011_1010 e 0b0011111001000101
(c) 0xDCBA, 0b0001_1100_1010_1011 e 0b1110001101010100
(a) 0xB3D5, 0b1000_0011_0101_1101 e 0b0111110010100010
(b) 0 xCDAB, Ob1100_0001_1011_1010 e 0b0011111001000101
(c) 0xDCBA, 0b0001_1100_1010_1011 e 0b1110001101010100
Passo 1
O enunciado dá três valores de 16 bits armazenados em big-endian e pede a representação desses mesmos 16 bits em little-endian. Os valores dados são:
,
e
.
Queremos descobrir como ficam esses mesmos bytes quando a ordem for little-endian (ou seja, quando os bytes forem invertidos). As alternativas são (a), (b) e (c) fornecidas pelo enunciado.
Queremos descobrir como ficam esses mesmos bytes quando a ordem for little-endian (ou seja, quando os bytes forem invertidos). As alternativas são (a), (b) e (c) fornecidas pelo enunciado.
Passo 2
Conceito essencial (explicação didática): o que significa big-endian e little-endian?
- Um valor de 16 bits é formado por 2 bytes (cada byte tem 8 bits).
- Em big-endian o byte mais significativo (MSB, “mais importante”) vem primeiro na memória; em little-endian o byte menos significativo (LSB) vem primeiro.
- Para converter a representação entre big-endian e little-endian em um valor de 16 bits basta trocar a ordem dos dois bytes.
Exemplo simples: se os bytes sãoe (onde é o byte alto e o byte baixo), big-endian armazena e little-endian armazena .
Passo 3
Como identificar bytes em cada formato:
- Em hexadecimal cada dois dígitos representam um byte. Ex.: em
o byte alto é e o byte baixo é . - Em binário separe em grupos de 8 bits: por exemplo
tem primeiro byte e segundo .
Agora aplicamos a regra de inversão de bytes para cada número.
Passo 4
Primeiro número:
.
- Separe em bytes: byte alto
e byte baixo . - Inverta a ordem:
seguido de . - Resultado little-endian (escrito em hex como número com bytes trocados):
.
Passo 5
Segundo número:
.
- Removendo os underscores para ver claramente:
. - Separe em bytes de 8 bits:
- byte alto:
, - byte baixo:
.
- byte alto:
- Inverta a ordem dos bytes: primeiro
, depois . - Juntando:
(ou sem underscores ). - Esse é o resultado little-endian em binário.
Passo 6
Terceiro número:
.
- Separe em bytes de 8 bits:
- byte alto:
(que é ), - byte baixo:
(que é ).
- byte alto:
- Inverta a ordem: primeiro
, depois . - Juntando:
(ou sem underscores ). - Esse é o resultado little-endian em binário.
Passo 7
Comparando os resultados obtidos com as alternativas:
- Para
obtivemos . - Para
obtivemos . - Para
obtivemos .
Esses três resultados correspondem exatamente à alternativa (b).
Resposta
(b)