Pular para o conteúdo principal

2 postagens marcadas com "bytes"

Ver todas os Marcadores

Thiago Lages de Alencar

Definições utilizadas para informar em que ordem os bytes vão ser escritos na memória.

É preciso lembrar que a memória tem endereços, existe início e final.
Para o nosso exemplo iremos usar 16 bits (2 bytes):

| Endereço da memória |
| ------------------- |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |

O computador apenas trabalha com bytes (modificações são feitas em bytes, não bits).
Então vamos representar uma divisão entre os bytes.

| Endereço da memória |
| ------------------- |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| ------------------- |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |

Se pegarmos um inteiro (unsigned) como 5351, vamos precisar de 2 bytes para armazena-lo (pois seu binário é 00010100 11100111).
Existe duas maneiras famosas de se armazenar eles.

Little-endian: Byte menos significativo primeiro ("little end first").
Big-endian: Byte mais significativo primeiro ("big end first").

| Endereço da memória | Little-endian | Big-endian |
| ------------------- | ------------- | ---------- |
| 0 | 1 | 0 |
| 1 | 1 | 0 |
| 2 | 1 | 0 |
| 3 | 0 | 1 |
| 4 | 0 | 0 |
| 5 | 1 | 1 |
| 6 | 1 | 0 |
| 7 | 1 | 0 |
| ------------------- | ------------- | ---------- |
| 8 | 0 | 1 |
| 9 | 0 | 1 |
| 10 | 0 | 1 |
| 11 | 1 | 0 |
| 12 | 0 | 0 |
| 13 | 1 | 1 |
| 14 | 0 | 1 |
| 15 | 0 | 1 |

Note que os bits não mudam de ordem, apenas os bytes.

Thiago Lages de Alencar

O bit mais significativo é o bit que representa a maior valor do número.
O bit menos significativo é o bit que representa o menor valor do número.

O número 149 em binário é 10010101, cada bit é responsável por representar um número.

10010101
1286432168421

Nós sabemos que isto é equivalente a 149 pois somando o valor de todos os bits que são 1 obtemos 149.

128 + 16 + 4 + 1 = 149