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: 671

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

Integrando o PHP com Elasticsearch no desenvolvimento de um sistema de busca

Projeto de criação de um sistema de busca usando o framework Symfony e Elasticsearch. A integração com Kibana também é feito de modo remoto com um raspberrypi.

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.

Criando o esqueleto de um jogo de tiro 2D visto de cima usando P5.js

Usando lógicas matemáticas como trigonometria para criar e calcular o esqueleto de um jogo de tiro 2D em javascript

Desenvolvendo um jogo de quebra blocos em javascript

Programando um jogo clássico de arcade usando javascript e p5.js. O usuário deve quebrar os blocos utilizando uma bola ao mesmo tempo que evita que a bola saia pela parte inferior da tela

Tutorial de programação do jogo da serpente em javascript

Programando o clássico jogo da serpente usando o framework p5.js. Tutorial indicado para iniciantes da programação que querem aprender os conceitos básico da área criando jogos.

Veja também

Os computadores usam a numeração binária para a manipulação de dados em circuitos elétricos

A ausência e a presença de energia são dois estados que podem ser usados como valores. Esses valores são respectivamente zero e um.

Qual é o papel das grandes empresas além de fornecer seu serviços?

Poluição do ar, solo e água ainda é um grande problema para ser resolvido ainda em vários países. Há estudos que comprovam que os países mais poluentes podem causar câncer...

Sistema de numeção binário

O sistema de numeração binário é composto por apenas dois algarismos, 0 (zero) e 1 (um). Na computação, cada número binário é chamado de bit.

Indústria 4.0

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

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.