Representação de Dados 2/4

Propaganda
Representação de Dados 2/4
Software Básico
Aula 5
Prof. Dr. Rogério Vargas
http://rogerio.in
Endianess
(Extremidade)
●
Como organizamos os bytes na memória?
●
●
●
Big Endian: byte mais significativo com endereço
mais baixo → Sun, Mac
Little Endian: byte menos significativo com
endereço mais baixo → Intel, AMD (padrão x86)
Exemplos
●
Y = 0x1234567816 (= 30541989610) e &Y = 0xA00
Endereço
0xA00
0xA01
0xA02
0xA03
Big Endian
12
34
56
78
Little Endian
78
56
34
12
Endianess
●
Como organizamos os bytes na memória?
●
●
●
Big Endian: byte mais significativo com endereço
mais baixo → Sun, Mac
Little Endian: byte menos significativo com
endereço mais baixo → Intel, AMD (padrão x86)
Exemplos
●
Y = 0x1234567816 (= 30541989610) e &Y = 0xA00
Endereço
0xA00
0xA01
0xA02
0xA03
Big Endian
12
34
56
78
Little Endian
78
56
34
12
Nossa
Arquitetura
será esta!
Por causa do Endianess...
●
Quando usamos compiladores: programa →
assembly → linguagem de máquina
●
●
Quando usamos assembly: programa
(assembly) → linguagem de máquina
●
●
O endianess não nos interessa: programas iguais
geram resultados iguais
O endianess é absolutamente relevante!
Transferência de dados entre máquinas bigendian e little-endian → outra dor de cabeça
(para os programadores de baixo nível)
Nossa máquina é
●
Exercício
●
Baixe o programa endianess.c da página
●
Verifique como ficam representados os
seguintes números (note que você precisará
convertê-los em decimal)
●
0x42423232
●
0x12344321
●
0xABCD1234
●
0x00000001
●
0X80000000
Limitações da máquina
●
●
Pode-se usar quantidades variadas de bytes
para representar números
Inteiros não negativos
●
1 byte: 28-1 = 255
●
2 bytes: 216-1 = 65.535
●
4 bytes: 232-1 = 4.294.967.295
●
8 bytes: 264-1 = 18.446.744.073.709.551.615
Alguns Tipos
Tipo (C)
No de bytes (32 bits) No de bytes (64 bits)
char
1
1
short int
2
2
int
4
4
long int
4
8
char*
4
8
int*
4
8
long int*
4
8
Char
●
O tipo char é representado como um inteiro
●
1 byte (ASCII)
●
Unicode: UTF-8 UTF-16 UTF-32 (1, 2 e 4 bytes)
Char
Download