CodeGym /Cursos /Python SELF PT /Memória RAM e Representação de Dados

Memória RAM e Representação de Dados

Python SELF PT
Nível 52 , Lição 1
Disponível

8.1 Memória RAM

Memória RAM (Random Access Memory) do computador é um array de células de memória, cada uma com um endereço único. Essas células podem armazenar dados de vários tipos, como números, caracteres e ponteiros. Quando um programa está em execução, ele coloca seus dados e instruções nesta memória para acesso rápido.

Exemplo de células de memória:

0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79

Cada célula tem seu número de série, também chamado de endereço da célula na memória ou simplesmente endereço. Se seu computador tem 8 GB de memória, ele possui 8 bilhões dessas células, onde você pode armazenar alguma coisa útil.

Bits e Bytes

Cada célula pode armazenar um byte de informação. Cada byte é composto por 8 bits, e cada bit só pode conter 0 ou 1. Exemplo (para números inteiros positivos):

Número Representação em bits Arredondado para byte
0 0 00000000
1 1 00000001
100 1100100 01100100
1000 1111101000 00000011-11101000
1000 000 000 111011100110101100101000000000 00111011-10011010-11001010-00000000

Quanto mais bytes uma variável ocupa, mais valores ela pode armazenar. Exemplo:

  • 1 byte — 256 valores únicos
  • 2 bytes — 65 mil valores únicos
  • 3 bytes — 16 milhões
  • 4 bytes — 4 bilhões

8.2 Como os dados são representados na memória

Tipos de dados e sua representação

Dados numéricos dentro do processador e na memória

  • Números inteiros: armazenados em forma binária. O tamanho pode variar (1 byte, 2 bytes, 4 bytes).
  • Números reais: armazenados no formato de ponto flutuante (por exemplo, o formato IEEE 754 para números de 4 e 8 bytes).

x = 42  # Número inteiro
y = 3.14  # Número real

Importante! Em Python, os tipos embutidos int e float são classes completas que podem realizar cálculos complexos com números de comprimento infinito. No entanto, se você usar bibliotecas para cálculos científicos ou IA, encontrará exatamente o formato de dados que mencionei acima.

Dados de caracteres na memória do computador

Caracteres e strings são armazenados na memória como sequências de bytes. Por exemplo, na codificação ASCII cada caractere ocupa 1 byte, enquanto na codificação UTF-8 pode ocupar de 1 a 4 bytes.

Em Python 3.x, a codificação padrão para strings é UTF-8, mas você pode ler arquivos onde o texto é armazenado em outros formatos ou enviar dados pela rede que não estejam na codificação UTF-8.

Exemplo:


char = 'A'  # Caractere
string = "Hello, world!"  # String

Caracteres individuais em Python não têm seu próprio tipo — para eles também é usado o tipo str. No entanto, na memória, essas strings são armazenadas por caracteres. Um caractere geralmente ocupa de 1 a 4 bytes.

Ponteiros

Ponteiros armazenam endereços de outras células de memória. Eles permitem que programas trabalhem com estruturas de dados dinâmicas e gerenciem a memória de maneira mais eficiente.

Exemplo:


list = [1, 2, 3, 4]  # Lista
list_pointer = id(list)  # Ponteiro para o início da lista

8.3 Exemplos de representação de dados na memória RAM

1. Representação de números inteiros

Números inteiros são armazenados na memória como números binários (bits). Dependendo do tipo de dados, eles podem ocupar diferentes quantidades de bytes. Por exemplo, int normalmente ocupa 4 bytes (32 bits).

Assim é como o número 42 será representado na memória:

00000000 00000000 00000000 00101010

2. Representação de números reais (de ponto flutuante)

Números reais (por exemplo, do tipo float) são armazenados na memória no formato de ponto flutuante, geralmente pelo padrão IEEE 754. O float normalmente ocupa 4 bytes (32 bits), enquanto o double ocupa 8 bytes (64 bits).

Importante! Esses são os tipos de dados padrão vinculados à memória e ao processador. O tipo float em Python corresponde ao tipo double amplamente utilizado e ocupa 8 bytes.

Assim é como o número 3.14 será representado na memória:

01000000 01001000 11110110 01100110

3. Representação de caracteres e strings

Caracteres (por exemplo, do tipo char) são armazenados na memória como uma sequência de bytes. Strings são arrays de caracteres. Em linguagens C/C++ strings terminam com um byte nulo (\0), mas em Python não é assim.

Assim é como a string Hello será representada na memória:

'H' 'e' 'l' 'l' 'o'

Isso, por sua vez, será representado como 0 e 1:

01001000 01100101 01101100 01101100 01101111

8.4 Endereçamento de memória dinâmica

A memória dinâmica é alocada e liberada durante a execução do programa, conforme necessário. Todos os objetos que você cria em Python são criados nesta memória.

Ela é dividida em 2 tipos:

Heap: Área de memória de onde são alocados objetos dinâmicos. O gerenciamento dessa memória é feito através de funções de alocação (por exemplo, malloc em C) e liberação (por exemplo, free em C).

Stack: Área de memória usada para armazenar variáveis locais e dados de chamadas de funções. A memória é automaticamente alocada e liberada ao entrar e sair de uma função.

Novamente, não posso dar um exemplo em Python, pois é muito de alto nível para tais ações. Posso dar um exemplo em C:


// Alocação dinâmica de memória para um array de 10 inteiros
int *dynamic_var = (int *)malloc(sizeof(int) * 10); 

// Liberação de memória
free(dynamic_var);  

Endereçamento de memória — é o processo de determinar um endereço único para cada célula de memória. Cada endereço indica uma localização específica na memória que pode conter dados ou instruções.

Tipos de endereçamento

Endereçamento físico: acesso direto aos endereços físicos das células de memória. Gerenciado por hardware (por exemplo, controlador de memória).

Endereçamento virtual: utiliza mecanismos de gerenciamento de memória, como memória paginada ou segmentada, para fornecer aos processos um espaço de endereços isolado e protegido.

2
Tarefa
Python SELF PT, nível 52, lição 1
Bloqueado
Representação Binária
Representação Binária
2
Tarefa
Python SELF PT, nível 52, lição 1
Bloqueado
Converter um número para decimal
Converter um número para decimal
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION