Legacy: Entendendo Extremidade Computacional (endianness) usando uma Coxinha

Entenda como um computador ordena dados a partir de um polêmico questionamento brasileiro

Posted on September 6, 2022

Um velho questionamento da internet: Qual é o jeito certo de se comer uma coxinha?

Se você gosta de usar redes sociais, você provavelmente já se deparou com a questão: Qual é o jeito certo de se comer uma coxinha? Pelo lado de baixo? Pela ponta? Até os candidatos ao Prêmio Bom Gourmet 2018 de Melhor Coxinha de Curitiba já opinaram sobre esse assunto.

Esse mesmo dilema acontece com outras coisas, como a forma de comer um ovo cozido, como organizar datas corretamente e, não menos importante, isso também acontece em Arquitetura de Computadores.

Então, vamos hoje entender como computadores registram bits usando esse polêmico questionamento brasileiro!

Origem do termo Endianness

O termo Endianness é inspirado do livro As Viagens de Gulliver, onde em uma das histórias, conta que houve uma guerra civil entre os moradores da vila onde os moradores que preferiam quebrar os ovos cozidos pelo lado maior enfrentaram os que preferiam quebrar pelo lado menor.

Fonte: Wikipedia

Peso de Coxinha e Peso Numérico: MSB e LSB

Se eu mostrar uma foto de uma coxinha para alguém e perguntar: “Qual é o lado mais pesado?”, quase que certamente a pessoa responderá que o lado mais pesado é a base da coxinha, pois tem mais recheio dentro do que na ponta.

Isso também acontece com números, por exemplo, se eu mostro o número 3.589, podemos observar que o número mais “pesado” é o 3, pois representa três milhares. Logo, o número mais “leve” ou menos pesado é o 9, pois só representa nove unidades.

Quando um computador registra os dados a partir do Byte mais pesado (ou mais significativo), então ele funciona na ordem Big-endian. Quando ele começa pelo mais leve (ou menos significativo), então ele funciona na ordem Little-endian.

Exemplo prático

Vamos agora imaginar dois computadores com boca (sic): Um deles vai comer a coxinha pelo lado maior e o outro pela ponta.

Quando o primeiro computador recebe a coxinha a partir do lado maior, ele é um Big-endian, porque ele vai registrando a memória (digerindo a coxinha) a partir do MSB (Bit mais significante, ou a parte mais recheada da coxinha).

Agora quando o segundo computador recebe a coxinha a partir da ponta, ele é um Little-endian, pois ele vai endereçando os dados a partir do LSB (Bit menos significante, ou a ponta da coxinha).

Tipos de ordenação de bytes. Fonte: Wikipedia

Outros formas

Existem também outras formas de registrar, usadas por alguns computadores. Por exemplo, existe também o middle-endian, onde o bit cujo a grandeza é média será escrito primeiro. Uma analogia para essa representação é o formato de datas usado nos Estados Unidos: MM/DD/AAAA. Enquanto no Brasil, usamos o formato little-endian, onde a ordem é DD/MM/AAAA.

E qual é o jeito certo de ordenar?

Na realidade, assim como não existe um jeito certo de se comer uma coxinha, também não existe um jeito certo de ordenar os dados. Cada pessoa vai ter sua forma preferida de coxinha, assim como cada computador vai ter seu formato de ordenar esses dados.

Por exemplo, os processadores x86 da Intel, AMD e Z80 são os mais famosos que usam o formato little-endian, ordenando a partir do byte menos expressivo. Já pelo outro lado, os famosos 6800 e 68000 da Motorola usam o formato big-endian.

Conclusão

Enquanto estudava sobre o tópico, acabei achando vídeos muito explicativos e fáceis de entender sobre o assunto, porém em Inglês. Então decidi compilar o meu entendimento sobre o assunto e escrever um artigo em português, apenas alterando a analogia em prol da adaptação local para melhor entendimento. :)

Eu percebi que é muito mais fácil entender conceitos de computação quando você faz analogias desses conteúdos com problemas do cotidiano. Isso faz você absorver melhor o aprendizado e as vezes até traz uma solução inesperada para um problema.