🚀 Capítulo 01: Arquitetura de Von Neumann e Representação Numérica
🎯 Objetivos da Aula
Ao final desta aula, você será capaz de:
- Compreender o funcionamento interno de um computador baseado na Arquitetura de Von Neumann.
- Identificar as funções da CPU (ALU, UC, Registradores), Memória Principal (RAM) e Barramentos.
- Converter valores entre os sistemas de numeração Decimal, Binário e Hexadecimal.
- Escrever seu primeiro programa em linguagem C para exibir a representação de dados na tela.
🧠 1. Fundamentos Teóricos: A Arquitetura de Von Neumann
Proposta por John von Neumann em 1945, a arquitetura de Von Neumann estabeleceu o modelo onde dados e instruções de programas compartilham a mesma memória principal.
flowchart TD subgraph CPU ["Central Processing Unit (CPU)"] UC["Unidade de Controle (UC)"] ULA["Unidade Lógica e Aritmética (ULA)"] REG["Registradores (PC, MAR, MDR, ACC)"] end MEM["Memória Principal (RAM)\n(Instruções + Dados)"] IO["Dispositivos de Entrada/Saída\n(Teclado, Monitor, Disco)"] CPU <-->|"Barramento de Dados / Endereço"| MEM CPU <-->|"Barramento de Controle"| IO
O Ciclo de Busca e Execução (Fetch-Decode-Execute)
Toda instrução executada pelo computador passa obrigatoriamente por 3 etapas:
- Busca (Fetch): A CPU busca a instrução localizada no endereço de memória apontado pelo Program Counter (PC).
- Decodificação (Decode): A Unidade de Controle interpreta a instrução e identifica os operandos necessários.
- Execução (Execute): A Unidade Lógica e Aritmética (ULA) realiza a operação (ex.: soma, comparação) e armazena o resultado em um registrador ou na memória.
🔢 2. Representação Numérica na Memória (Bits, Bytes e Bases)
O computador utiliza o sistema Binário (Base 2) devido aos estados elétricos dos transistores: ligado (1) e desligado (0).
- 1 Bit: Menor unidade de informação (0 ou 1).
- 1 Byte: Conjunto de 8 Bits ( combinações possíveis, de 0 a 255).
- Hexadecimal (Base 16): Agrupa 4 bits (nibble) para facilitar a leitura humana (0-9 e A-F).
Tabela de Conversão Rápida
| Decimal | Binário (8 bits) | Hexadecimal |
|---|---|---|
0 | 0000 0000 | 0x00 |
15 | 0000 1111 | 0x0F |
128 | 1000 0000 | 0x80 |
255 | 1111 1111 | 0xFF |
💻 3. Prática Guiada em C: Exibindo Dados na Tela
Vamos escrever o programa clássico primeiro_programa.c para verificar o funcionamento do compilador e imprimir valores decimais e hexadecimais.
#include <stdio.h>
int main() {
int valor = 255;
printf("=========================================\n");
printf(" BEM-VINDO AO CURSO DE COMPUTACAO C \n");
printf("=========================================\n");
printf("Valor em Decimal : %d\n", valor);
printf("Valor em Hexadecimal : 0x%X\n", valor);
printf("Tamanho na Memoria : %lu Byte(s)\n", sizeof(valor));
printf("=========================================\n");
return 0;
}Compilação e Execução via Linha de Comando:
gcc primeiro_programa.c -o primeiro_programa
./primeiro_programa⚔️ 4. Desafios Práticos (Exercícios 30/50/20)
🥉 Nível Bronze (Fixação)
- Converta o número decimal
42para Binário e Hexadecimal no papel. - Explique a diferença entre a função da Unidade Lógica e Aritmética (ULA) e a Unidade de Controle (UC).
🥈 Nível Prata (Aplicação)
- Escreva um programa em C que declare três variáveis inteiras com os valores
10,31e100e imprima cada uma delas nos formatos Decimal e Hexadecimal.
🥇 Nível Ouro (Desafio)
- Modifique o programa para utilizar o operador
sizeof()e exibir o tamanho na memória dos tipos primitivoschar,short,int,longedouble.
💡 Gabaritos Sanfonados de Resposta
💡 Ver Gabarito do Nível Bronze
- Decimal 42:
- Binário:
0010 1010() - Hexadecimal:
0x2A
- Binário:
- Diferença: A UC gerencia o fluxo de instruções e decodifica o que deve ser feito. A ULA realiza os cálculos matemáticos e comparações lógicas reais.
💡 Ver Gabarito do Nível Prata & Ouro (Código C)
#include <stdio.h>
int main() {
printf("Tamanho char : %lu Byte(s)\n", sizeof(char));
printf("Tamanho short : %lu Byte(s)\n", sizeof(short));
printf("Tamanho int : %lu Byte(s)\n", sizeof(int));
printf("Tamanho long : %lu Byte(s)\n", sizeof(long));
printf("Tamanho double : %lu Byte(s)\n", sizeof(double));
return 0;
}📚 Referências Teóricas Oficiais
- STALLINGS, William. Arquitetura e Organização de Computadores. 10ª Edição. Pearson, 2017. Cap. 3.
- KERNIGHAN, Brian W.; RITCHIE, Dennis M.. A Linguagem de Programação C. Campus/Elsevier, 1989. Cap. 1.
⬅️ Voltar ao Sumário da Fase 01 | Próximo Capítulo (Linguagem C) ➡️