Ir ao conteúdo

Posts recomendados

Postado

Pessoal preciso criar um programa na linguagem c que atribua um valor em hexadecimal a uma variável e mostre como ele está sendo armazenado na memória se é Big endin ou litlle endin. Estou tentanto , mais nao sei por onde começar alguém pode me ajudar ?

Postado

Primeiro, deve-se pensar nos tamanhos das variáveis. Sabe-se que em C a menor unidade endereçável é o byte, o que significa que o hexadecimal seria de 16 bits, 32 bits ou 64 bits. Considerando 16 bits (o caso mais simples), 2 bytes teriam que ser avaliados F5Rua4D.gif:

 

 

//Os tipos 'uint8_t' e 'uint16_t' são definidos em 'stdint.h'.

uint16_t Hex = 0xABCD;  //Um exemplo de hexadecimal de 16 bits.
uint8_t *Addr = (uint8_t *) &Hex;  //Casting para endereçar os bytes do dado acima.

 

 

Acima, usa-se um truque com ponteiros para se obter os endereços dos blocos de 8 bits constituintes do bloco maior de 16 bits a ser trabalhado ! Esses endereços, a fim de determinar se Little ou Big Endian, seriam &Addr[0] e &Addr[1], respectivamente das partes CD e AB do hexadecimal ABCD.

 

 

 

Espero ter ajudado GbhmuXl.gif.

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!