Como um sistema de 32/64 bits armazena números? [fechadas]

0

Estava querendo saber como os números são armazenados. Ou eles salvam, por exemplo, o número 1 em binário como 000 (31/63 zeros) 1 ou apenas 1? E como eles sabem quando é um novo número? Com outras palavras, como é que diferencia entre 2 x 1 e 3? E um sistema de 64 bits não custaria mais armazenamento se armazenasse assim 000 (63 zeros) 1?

    
por user3360676 19.04.2017 / 09:14

1 resposta

1

Os dados são armazenados em unidades de bytes - o número 1 ocuparia, no mínimo, 8 bits: 00000001 e sempre inicia e termina em um limite de bytes. Quando a CPU acessa dados na RAM, ela endereça todo o byte, não os bits individuais.

O rótulo "64-bit" significa apenas que todos os endereços de memória têm 4 bytes de comprimento (e naturalmente que a CPU tem instruções para trabalhar com números tão grandes).

Mas isso não muda como os programas armazenam todos os outros tipos de dados. Para todo o resto, o programa (ou seja, seu autor) pode escolher o tamanho preferido, desde que seja um número exato de bytes. Por exemplo, em C, uma variável declarada como short ou uint16_t será 16 bits, ou seja, 2 bytes. Os tamanhos usuais são 8, 16, 32, 64 bits (isto é, 1, 2, 4 ou 8 bytes), já que foi com isso que as CPUs trabalharam.

(É claro, programas podem armazenar dados da maneira que quiserem - muitos formatos de arquivos em disco fazem pacotes em 3 bytes ou 5 bytes ou qualquer outra coisa - mas é mais complicado trabalhar com eles. )

Para continuar com sua pergunta, como "o sistema" distingue entre um único número de 32 bits e, por exemplo, dois de 16 bits - a resposta é que não precisa . É tudo decidido quando o programa é escrito e / ou compilado, então as instruções resultantes da CPU funcionam diretamente com os tamanhos específicos.

(Na verdade, é comum um programa interpretar os mesmos dados de maneiras diferentes - por exemplo, mesmo que o texto possa ser armazenado como uma série de caracteres de 1 byte, funções como strpos () usam truques de aceleração que dependem da interpretação do exatamente os mesmos dados que uma série de números de 4 bytes ou mesmo 8 bytes.)

    
por 19.04.2017 / 11:25