diego passos 3°programa - universidade federal...

39
Agenda 1° Programa 2° Programa 3° Programa 4° Programa Rascunho 6 de abril 2010 Organização de Computadores Diego Passos Primeiro Laboratório Material: http://www.ic.uff.br/~debora/orgcomp/lab1/index.htm Organização de Computadores I Primeiro Laboratório 1/21

Upload: others

Post on 30-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Organização de Computadores

Diego Passos

Primeiro LaboratórioMaterial:http://www.ic.uff.br/~debora/orgcomp/lab1/index.htm

Organização de Computadores I Primeiro Laboratório 1/21

Page 2: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Primeiro Programa#include "stdio.h"

int main (void) {int x = 112;printf("%d %x %u %c %o\n", x, x, x, x, x);return 0;

}

Tipo int: valor inteiro com sinal, 4 bytes.Função printf: imprime valores em diversosformatos:

%d: decimal com sinal.%x: hexadecimal.%u: decimal sem sinal.%c: caracter (ASCII).%o: octal.

Organização de Computadores I Primeiro Laboratório 2/21

Page 3: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 1

Dado que o valor da variável é 112, indiquecomo este valor deve ser impresso peloprograma utilizando as formatações doprograma.

Solução

Decimal com sinal: 112.Hexadecimal: 70(16).Decimal sem sinal: 112.Caracter: “p”.Octal: 160(8).

Organização de Computadores I Primeiro Laboratório 3/21

Page 4: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 1

Dado que o valor da variável é 112, indiquecomo este valor deve ser impresso peloprograma utilizando as formatações doprograma.

Solução

Decimal com sinal:

112.Hexadecimal: 70(16).Decimal sem sinal: 112.Caracter: “p”.Octal: 160(8).

Organização de Computadores I Primeiro Laboratório 3/21

Page 5: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 1

Dado que o valor da variável é 112, indiquecomo este valor deve ser impresso peloprograma utilizando as formatações doprograma.

Solução

Decimal com sinal: 112.Hexadecimal:

70(16).Decimal sem sinal: 112.Caracter: “p”.Octal: 160(8).

Organização de Computadores I Primeiro Laboratório 3/21

Page 6: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 1

Dado que o valor da variável é 112, indiquecomo este valor deve ser impresso peloprograma utilizando as formatações doprograma.

Solução

Decimal com sinal: 112.Hexadecimal: 70(16).Decimal sem sinal:

112.Caracter: “p”.Octal: 160(8).

Organização de Computadores I Primeiro Laboratório 3/21

Page 7: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 1

Dado que o valor da variável é 112, indiquecomo este valor deve ser impresso peloprograma utilizando as formatações doprograma.

Solução

Decimal com sinal: 112.Hexadecimal: 70(16).Decimal sem sinal: 112.Caracter:

“p”.Octal: 160(8).

Organização de Computadores I Primeiro Laboratório 3/21

Page 8: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 1

Dado que o valor da variável é 112, indiquecomo este valor deve ser impresso peloprograma utilizando as formatações doprograma.

Solução

Decimal com sinal: 112.Hexadecimal: 70(16).Decimal sem sinal: 112.Caracter: “p”.Octal:

160(8).

Organização de Computadores I Primeiro Laboratório 3/21

Page 9: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 1

Dado que o valor da variável é 112, indiquecomo este valor deve ser impresso peloprograma utilizando as formatações doprograma.

Solução

Decimal com sinal: 112.Hexadecimal: 70(16).Decimal sem sinal: 112.Caracter: “p”.Octal: 160(8).

Organização de Computadores I Primeiro Laboratório 3/21

Page 10: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 2

Compile e execute este programa e indique seas respostas que você encontrou são asmesmas do programa.

Solução

gcc -o reprint reprint.c

Organização de Computadores I Primeiro Laboratório 4/21

Page 11: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 2

Compile e execute este programa e indique seas respostas que você encontrou são asmesmas do programa.

Solução

gcc -o reprint reprint.c

Organização de Computadores I Primeiro Laboratório 4/21

Page 12: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 3

Altere o valor para −112. Quais os valoresimpressos agora?

Solução

Decimal com sinal: −112.Hexadecimal: FFFFFF90(16). Por que?

Decimal sem sinal: 4294967184.Caracter: “É”.Octal: 37777777620(8).

Organização de Computadores I Primeiro Laboratório 5/21

Page 13: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 3

Altere o valor para −112. Quais os valoresimpressos agora?

Solução

Decimal com sinal:

−112.Hexadecimal: FFFFFF90(16). Por que?

Decimal sem sinal: 4294967184.Caracter: “É”.Octal: 37777777620(8).

Organização de Computadores I Primeiro Laboratório 5/21

Page 14: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 3

Altere o valor para −112. Quais os valoresimpressos agora?

Solução

Decimal com sinal: −112.Hexadecimal:

FFFFFF90(16). Por que?

Decimal sem sinal: 4294967184.Caracter: “É”.Octal: 37777777620(8).

Organização de Computadores I Primeiro Laboratório 5/21

Page 15: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 3

Altere o valor para −112. Quais os valoresimpressos agora?

Solução

Decimal com sinal: −112.Hexadecimal: FFFFFF90(16). Por que?

Decimal sem sinal: 4294967184.Caracter: “É”.Octal: 37777777620(8).

Organização de Computadores I Primeiro Laboratório 5/21

Page 16: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 3

Altere o valor para −112. Quais os valoresimpressos agora?

Solução

Decimal com sinal: −112.Hexadecimal: FFFFFF90(16). Por que?

Decimal sem sinal:

4294967184.Caracter: “É”.Octal: 37777777620(8).

Organização de Computadores I Primeiro Laboratório 5/21

Page 17: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 3

Altere o valor para −112. Quais os valoresimpressos agora?

Solução

Decimal com sinal: −112.Hexadecimal: FFFFFF90(16). Por que?

Decimal sem sinal: 4294967184.Caracter:

“É”.Octal: 37777777620(8).

Organização de Computadores I Primeiro Laboratório 5/21

Page 18: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 3

Altere o valor para −112. Quais os valoresimpressos agora?

Solução

Decimal com sinal: −112.Hexadecimal: FFFFFF90(16). Por que?

Decimal sem sinal: 4294967184.Caracter: “É”.Octal:

37777777620(8).

Organização de Computadores I Primeiro Laboratório 5/21

Page 19: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 3

Altere o valor para −112. Quais os valoresimpressos agora?

Solução

Decimal com sinal: −112.Hexadecimal: FFFFFF90(16). Por que?

Decimal sem sinal: 4294967184.Caracter: “É”.Octal: 37777777620(8).

Organização de Computadores I Primeiro Laboratório 5/21

Page 20: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Segundo Programa

#include <stdio.h>

int main (void) {printf("%d\n", sizeof(int));return 0;

}

Função sizeof: retorna o tamanho de um tipo ouvariável (em bytes).

Organização de Computadores I Primeiro Laboratório 6/21

Page 21: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 4

Compile, execute o programa e verifique otamanho do tipo int.

Solução

gcc -o tam tam.c

Organização de Computadores I Primeiro Laboratório 7/21

Page 22: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 5

Faça o mesmo para os tipos short int, char,float, double.

Organização de Computadores I Primeiro Laboratório 8/21

Page 23: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Terceiro Programa

#include <stdio.h>

void dump (void *p, int n) {unsigned char *p1 = p;while (n--) {

printf("Endereco %p - %02x\n", p1, *p1);p1++;

}}int main (void) {

int i = 16;dump(&i, sizeof(i));return 0;

}

Organização de Computadores I Primeiro Laboratório 9/21

Page 24: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Função dump

void dump (void *p, int n) {unsigned char *p1 = p;while (n--) {

printf("Endereco %p - %02x\n", p1, *p1);p1++;

}}

Tipo void *: ponteiro, endereço de memória.Exemplo

Modificador %p: imprime ponteiros(hexadecimal com 6 dígitos).Modificador %02x: hexadecimal, dois dígitos,completados com zeros.

Organização de Computadores I Primeiro Laboratório 10/21

Page 25: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Função main

int main (void) {int i = 16;dump(&i, sizeof(i));return 0;

}

Operador &: retorna o endereço da variável.

Organização de Computadores I Primeiro Laboratório 11/21

Page 26: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 6

Execute o programa e verifique como a variável ié armazenada em memória.

Solução

gcc -o vermem vermem.c

Organização de Computadores I Primeiro Laboratório 12/21

Page 27: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 7

Altere o valor de i para −16. Como é arepresentação agora?

Organização de Computadores I Primeiro Laboratório 13/21

Page 28: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 8

Altere o programa para verificar asrepresentações do valor −16 para os tipos shortint, char e float.

Solução

Para o tipo float: c1800000(16). Por que?

Organização de Computadores I Primeiro Laboratório 14/21

Page 29: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 8

Altere o programa para verificar asrepresentações do valor −16 para os tipos shortint, char e float.

Solução

Para o tipo float: c1800000(16). Por que?

Organização de Computadores I Primeiro Laboratório 14/21

Page 30: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Quarto Programa

#include <stdio.h>

int main (void) {short int i = 32767;i = i+1;printf("%d\n", i);return 0;

}

Tipo short int: inteiro com sinal, 2 bytes.

Organização de Computadores I Primeiro Laboratório 15/21

Page 31: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 9

Qual é o resultado esperado? Execute oprograma e verifique.

Solução

Esperado: 32768?Obtido: -32768 Por que?

Organização de Computadores I Primeiro Laboratório 16/21

Page 32: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 9

Qual é o resultado esperado? Execute oprograma e verifique.

Solução

Esperado:

32768?Obtido: -32768 Por que?

Organização de Computadores I Primeiro Laboratório 16/21

Page 33: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 9

Qual é o resultado esperado? Execute oprograma e verifique.

Solução

Esperado: 32768?Obtido:

-32768 Por que?

Organização de Computadores I Primeiro Laboratório 16/21

Page 34: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 9

Qual é o resultado esperado? Execute oprograma e verifique.

Solução

Esperado: 32768?Obtido: -32768 Por que?

Organização de Computadores I Primeiro Laboratório 16/21

Page 35: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Pergunta 10

Re-execute o programa trocando o tipo de i paraint. Explique novamente o resultado.

Organização de Computadores I Primeiro Laboratório 17/21

Page 36: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Calculando -112 emHexadecimal

00000000 00000000 00000000 01110000 (2) = 112(10)

11111111 11111111 11111111 10001111 +

00000000 00000000 00000000 00000001

11111111 11111111 11111111 10010000

Complemento a 2:

FF FF FF 90

Voltar

Organização de Computadores I Primeiro Laboratório 18/21

Page 37: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

PonteirosMemória

1

2

...

70

71

72

73

...

...

...

p = 70

144

13

0

11

200

Voltar

Organização de Computadores I Primeiro Laboratório 19/21

Page 38: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Overflow

01111111 11111111(2) = 32767

(10)

+ 00000000 00000001(2)

10000000 00000000 (negativo)

Valor absoluto:

01111111 11111111+ 00000000 00000001

10000000 00000000 (2)

(2)

(2)

= 32768(10)

Voltar

Organização de Computadores I Primeiro Laboratório 20/21

Page 39: Diego Passos 3°Programa - Universidade Federal Fluminensediego/disciplinas/2015_1/FAC/arquivos/lab1S… · Agenda 1°Programa 2°Programa 3°Programa 4°Programa Rascunho 6 de abril

Agenda

1° Programa2° Programa3° Programa4° ProgramaRascunho

6 de abril2010

Ponto Flutuante

11000001 10000000 00000000 00000000

C1 80 00 00

Sinal

= 1

Expoente

= 131Mantissa

= 0

Valor final:

(−1)1 · 1, 0× 2131−127 = −16

Voltar

Organização de Computadores I Primeiro Laboratório 21/21