Interpretação dos bytes armazenados na memória da máquina Little Endian?

0

No meu programa eu estou armazenando o valor 512 no tipo int.

#include <stdio.h>
int main()
{
 unsigned int i = 512 ;
char *c = (char*)&i;
printf("c:%u %d\n",c,*c);
printf("c:%u %d\n",c+1,*(c+1));
printf("c:%u %d\n",c+2,*(c+2));
printf("c:%u %d\n",c+3,*(c+3));
}

o / p >

c:3493911684 0
c:3493911685 2
c:3493911686 0
c:3493911687 0

Explicação: 512 = 1000000000 = > 00000010 0000000 = > 02 00.ie 00 00 02 00.que aqui MSB e LSB = 00.Em uma máquina LE, o LSB deve ser colocado na memória mais baixa. colocar para o programa acima deve ser 00,02,00,00 e que é o que eu tenho como uma saída Mas enquanto interpreta como é que faz exatamente 512. faz qualquer cálculo em registros.Pode algum corpo dar alguma entrada para isso?

2ª pergunta é que a transmissão dos bytes na rede é independente da endianess da máquina ou a transmissão também ter o mesmo pedido como armazenar dizer por exemplo em LE para armazenar nós seguimos (LSB primeiro, depois MSB) então para transmitindo também segue byte LSB primeiro e depois MSB.

    
por Subi Puthalath 08.08.2013 / 06:25

1 resposta

0

Os registradores em uma máquina little-endian serão, por definição, little-endian.

A transmissão dos referidos bytes por qualquer meio é certamente independente disso. Você precisa estar obedecendo a um protocolo que diz para colocar os bytes em uma ordem específica ao enviar e que quaisquer bytes recebidos estão em uma ordem específica - a API sockets do unix tem coisas como htonl() por exemplo. Se eles não vierem na ordem certa, você precisa virá-los antes de trabalhar neles.

    
por 08.08.2013 / 18:56