Extremidades (Ordem de bytes)

Ordem que os bytes são gerenciados em uma máquina, seja por comunicação através da internet ou por dispositivos como USB.

Categoria de Tecnologia

Postado em 17 abril 2023

Atualizado em 17 abril 2023

Palavras-chave: usb,bytes,bit,ordem,extremidade,endianness,little,big

Visualizações: 612

O idioma português é bastante semelhante com o inglês em aspectos gramaticais. Essas características em comum passam despercebidas por pessoas que já são acostumados com umas das línguas. Porém, caso um nativo da língua árabe comece a aprender inglês, ele encontrará problemas que um nativo em português nunca encontrou, como a ordem da escrita do idioma. Na língua árabe, as sentenças são escritas da direita para esquerda, enquanto que no inglês, a ordem é da esquerda para a direita.

Na computação, existe um problema semelhante ao exemplo acima e se refere a ordem que os bytes são armazenados pelo processador na memória do computador. É a extremidade.

O que é a extremidade?

Esse termo vem do inglês “endianness” e pode ser traduzido para “extremidade” em português. Esse conceito se refere a ordem em que os dados são armazenados na memória do computador.

Originalmente, o termo “endianness” foi importado do livro “As viagens de Gulliver”. O livro abordava sobre um guerra civil entre dois tipos de pessoas:

  • Big-endians
  • Little-endians

O motivo da guerra era que os Big-endians preferiam quebrar o ovo pela parte maior e os Little-endians preferiam quebrar pela parte menor.

extremidade

Esse conceito foi adotado na computação para descrever a ordem em que os dados são armazenados na memória do computador.

O que é a extremidade na computação e qual é a sua importância?

A extremidade na computação se refere a ordem que os bytes são armazenados na memória da máquina. O conceito se aplica aos bytes e não aos bits (1byte = 8bits).

Apesar dos processadores atuais serem little-endians, ainda existem processadores big-endians. O grande problema ocorre na troca de dados entre duas máquinas com diferentes extremidades através da internet ou através de dispositivos de transferência de dados, como o USB. Quando existe transferência de dados entre duas máquinas com extremidades diferentes, pode acontecer um problema de incompatibilidade de ordem de bytes. A máquina que está recebendo os dados pode interpretar os bytes incorretamente, resultando em problemas como erros ou comportamentos imprevisíveis do sistema. Por essa razão, muitos protocolos de comunicação divulgam documentos contendo informações sobre a ordem dos bytes que os dados são processados.

A extremidade não se aplica apenas em nível hardware, podendo ser também usada no nível software. Um bom exemplo são os arquivos PNG, que usam a mesma ordem de bytes da internet (Network byte order) que é big-endian. Para processadores como Intel, presente em quase todos os computadores residenciais atuais, se comunicar com a internet poderia trazer problemas, uma vez que os processadores Intel são little-endians. Porém, antes de começar a emitir os pacotes de dados através da rede mundial de computadores, a máquina emissora faz a conversão da extremidade dos dados usando a função htons (Host to network short). Quando os pacotes de dados chegam na máquina destino, caso haja a necessidade, os dados são convertidos para o formato little-endian outra vez, dessa vez usando a função ntohs (Network to host short),

ordem de bytes na internet

Qual é a relevância da extremidade?

O valor depende da interpretação do leitor. Usaremos como exemplo o número decimal 12,345. Se segmentarmos cada algoritmo na numeração decimal, podemos chegar a seguinte conclusão:

  • 10,000 = 11041 * 10^{4} (Maior)
  • 2,000 = 21032 * 10^{3}
  • 300 = 31023 * 10^{2}
  • 40 = 41014 * 10^{1}
  • 5 = 51005 * 10^{0} (Menor)

Nós lemos os números na ordem big-end. Isso é, da ordem do maior para o menor número. Se adicionarmos 1 ao maior número, teremos um resultado de 22,345. Entretanto se adicionarmos 1 ao menor número teremos um resultado de 12,346. Em bits é a mesma coisa.

Como o little-end e big-end são armazenados?

Os dados são armazenados em números binários na memória do computador. O problema de extremidade entre little-end e big-end só acontece em bytes, os bits não são afetados e sempre seguem a mesma ordem.

ordem de bytes na internet na memória

Ambos os valores acima, dependendo da extremidade da máquina possuem o mesmo valor. Em uma máquina little-endian, os bytes com menor valor são ordenados antes dos bytes com maior valor. Em uma máquina big-endian, os bytes maiores são ordenados antes dos bytes com menor valor.

Conclusão

A extremidade é a ordem em que os bytes são gerenciados em uma máquina. Existem máquinas little-endians e big-endians. É importante saber a extremidade das máquinas, principalmente quando há troca de informação entre elas, uma vez que isso define como a máquina irá enviar ou interpretar os dados.

Projetos práticos

Usando dados fornecidos pelo TSE para simular o gráfico das eleições presidenciais de 2022

Simulação dos gráficos do segundo turno das eleições presidenciais, utilizando python e ferramentas de análise de dados, pandas e jupyter.

Integrando Laravel com o protocolo MQTT para comunicação entre dispositivos

Projeto de comunicação entre dois dispositivos ESP8266 e Raspberrypi4. Laravel irá funcionar como servidor e receptor de dados de temperatura e umidade coletados com o DHT11.

Implementando um algoritmo de pathfinding

Implementando um programa que encontra a menor distância entre dois pontos dentro de um labirinto usando o algoritmo A* (a-estrela).

Criando um sistema de mini garagem automatizada integrada com um sistema de monitoramento independente

Desenvolvimento de um sistema de monitoramento que exibi todos os eventos que acontecem na garagem automatizada, como abertura de portões ou ocupação de vagas.

Criando um jogo de pacman usando javascript e pixi.js (parte 1)

Desenvolvimento dos conceitos mais básicos do clássico pacman, como: mapa, animação, deslocamento e detector de colisões.

Veja também

Os bancos estão sendo substituídos pelos robôs em transações online

As criptomoedas mudaram totalmente o modo das pessoas pensarem. Usar robôs para autentificar transações online, custa muito menos comparado com os bancos em relação às taxas...

A comunicação entre dispositivos existe graças aos protocolos

Alguns desses protocolos é o HTTP que usamos em nossos navegadores. Sem esses protocolos teríamos alguns problemas na comunicação de dispositivos através da internet.

Endereço MAC

Usado como identificador em uma rede local. Possui 48bits e mais de 280 trilhões de variações que podem ser atribuídas aos dispositivos.

Algoritmo

O algoritmo é um conjunto de instruções escritas por um programador com intuito de solucionar um problema ou obter um resultado previsto.

Indústria 4.0

Também conhecida como quarta revolução industrial, utiliza tecnologias modernas para automatizar processos. Iniciou-se em 2011, na Alemanha.

Notação do big-O

A notação do O grande é um método de fácil implementação, usado para avaliar a eficiência de um algoritmo em relação ao tempo de processamento.