Dúvida Little Endian e Big Endian

Fala ae galera,

Bom, eu comecei a estudar sobre Operadores de bit a bits, Deslocamento, etc. e também sobre Little Endian e Big Endian. Eu tomei o conceito da “coisa”, mas gostaria de saber uma forma “real” de usar estas “ordens”.

Sei que pode ser usado em comunicação de Redes, etc. Mas gostaria de algum exemplo mais pratico.

Também se alguem tiver algum material, seria de grande ajuda também :-o

Valeu !

Em java vai depender , a única vez que EU usei o bit shifting em java foi para efetuar um calculo de CRC. Se entendi a sua pergunta, você quer saber para quê deve ser usado isso?

Lucas. Isso mesmo.

Os processadores representam internamente seus dados de duas maneiras principais (há outras, mas as principais são as seguintes):

  • Big Endian - Processadores como o Motorola 680X0 ou o Sun Sparc (antes da versão 9); a máquina virtual Java se comporta, para muitos casos, como se ela fosse Big-Endian.
  • Low Endian - Processadores como a linha x86 e x64
  • Big/Low Endian - Processadores que podem ser chaveados (de acordo com o sistema operacional) entre os dois modos, como o PowerPC (normalmente big-endian) ou o Itanium (normalmente low-endian).

Por exemplo, se você escrever um programa em C em uma plataforma Intel (x86) e mandar os bytes de um “int” (4 bytes) diretamente para outro programa em C em uma plataforma Sparc, vai ter problemas porque a ordem dos bytes é diferente. Para evitar tais problemas, é melhor normalizar a ordem sempre para “big-endian” (até porque o Java também se comporta como se a máquina virtual fosse Big-Endian).

Ou seja thingol,

Eu usuário isso para “conversar” com qualquer plataforma.

Por exemplo: Caso eu queira comunicar uma plataforma Intel com uma PowerMac, por exemplo.

Este seria um exemplo ?

Sim senhor; normalmente você transmite os dados em “big-endian” (que é chamado em terminologia de redes de “network byte order”).

Eu ressalto o papel de você saber a diferença, porque você pode ter dados gravados (por exemplo, por programas em C, C++, C# etc.) que tenham dados em notação “little-endian”, e você tem de saber que esses dados têm de ser “invertidos” para poderem ser usados corretamente no Java.