Exercício 1. Em geral representamos números em base decimal. Outras bases comuns para representação de números são: base binária (dígitos 0 e 1), base octal (dígitos entre 0 e 7), base decimal (dígitos entre 0 e 9) e base hexadecimal (dígitos entre 0 e 9 mais as letras A, B, C, D, E e F).
Tomemos por exemplo o número 210 (dois elevado à décima potência):
Outro exemplo, tomemos o número 27 + 26:
As bases octal e hexadecimal são úteis pois elas são fácilmente relacionadas com a base binária usada por computadores. Em particular, números em base octal agrupam bits de 3 em 3, e números em hexadecimal agrupam bits de 4 em 4. Compare:
210 = 1 * 210 = 10 000 000 000 em binário = 2000 em octal = 100 0000 0000 em binário = 400 em hexadecimal.
28 + 27 = 11 000 000 em binário = 300 em octal = 1100 0000 em binário = C0 em hexadecimal.
Complete a tabela abaixo com a representação de números nas bases binária, octal, decimal e hexadecimal.
Binária | Octal | Decimal | Hexadecimal |
10 000 000 000 | 2 000 | 1024 | 400 |
100 100 010 | ? | ? | ? |
? | 433 | ? | ? |
? | ? | 392 | ? |
? | ? | ? | 4D |
Exercício 2. Em C podemos representar números nas bases octal, decimal e hexadecimal, usando as seguintes regras:
Note que as regras acima se aplicam também para constantes negativas precedidas do operador negativo (sinal menos).
Reescreva as colunas relativas às bases octal, decimal e hexadecimal da tabela do exercício 1, convertendo os números para sua representação em C.
Exercício 3. Esboce um programa que defina uma estrutura endereço com três campos: um string de 80 caracteres, um inteiro, e um número de ponto flutuante. Em seu programa, declare duas variáveis com tipo igual ao da estrutura definida. Inicialize a primeira variável na declaração e inicialize a segunda variável depois da declaração (campo por campo). Por último imprima na tela os valores dos campos das duas variáveis.
Exercício 4. Informe qual a saída impressa pelo código abaixo. Atenção: considere o escopo das variáveis envolvidas. Tente resolver "de cabeça" antes de executar o código.
int i, j; int soma = 0; for(i = 0; i < 3; i++) { soma++; int soma = 0; for(j = 0; j < 3; j++) { printf("%d %d %d\n", i, j, soma); soma++; } } printf("%d\n", soma);