sistemas de computação - alfaalfa.di.uminho.pt/~brunom/sc_m1.pdfsistemas de numeração ! os...

40
Sistemas de Computação Práticas Laboratoriais Semana 2 Prof. Bruno Medeiros Prof. Antonio Pina

Upload: others

Post on 03-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Sistemas de Computação Práticas Laboratoriais

Semana 2

Prof. Bruno Medeiros Prof. Antonio Pina

Page 2: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Sumário

�  Sistemas de numeração e conversão de bases

�  Operações aritméticas e lógicas em base 2

�  Representação binária de valores positivos e negativos �  Sinal e amplitude �  Complemento para 1

�  Complemento para 2 �  Representação por excesso

Page 3: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Sistemas de numeração

�  Os números podem ser representados em diferentes sistemas de numeração �  Humanos, normalmente usam um sistema de

numeração em base 10 �  Os computadores, por serem dispositivos elétricos

utilizam dígitos binários (base 2), conhecidos por bits �  0 – sem corrente

�  1 – com corrente

Page 4: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Sistemas de numeração

�  Conceito de ordem e base �  Exemplo : 1532.6410

�  A base determina o número de dígitos que podem ser utilizados �  Base 10 – 10 dígitos (0..9)

�  Base 2 – 2 dígitos (0, 1) �  Base 16 – 16 dígitos (0.. 9, A .. F)

�  A ordem é a posição de um dado dígito no número

Page 5: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Conversões entre bases (base b para base decimal)

�  A conversão de um número numa base b para a base decimal obtém-se somando os resultados da multiplicação de cada dígito pela base elevada à ordem do dígito

�  Exemplos: Conversão de base b para decimal

�  15326 (base 6) �  = 1 * 63 + 5 * 62 + 3 * 61 + 2 * 60 = 41610

�  110110.0112 (base 2) �  = 1 * 25 + 1 * 24 + 0 * 23 + 1 * 22 + 1 * 21 + 0 * 20 +

0 * 2-1 + 1 * 2-2 + 1 * 2-3 = 54.37510

Page 6: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Conversões entre bases (base decimal para base b)

�  Na conversão de um numero na base decimal para uma base b, o processo mais direto é composto por duas partes

�  Divisão sucessivas da parte inteira do número pela respectiva base, sendo os restos obtidos os dígitos a usar da base b

�  Multiplicação sucessiva da parte fraccionária desse número pela respectiva base, sendo a parte inteira de cada um dos produtos, os dígitos da base b

Page 7: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Exemplo: decimal -> binário

�  235.37510 è 11101011.0112

235/2 = 117 Resto = 1 117/2 = 58 Resto = 1 58/2 = 29 Resto = 0 29/2 = 14 Resto = 1 14/2 = 7 Resto = 0 7/2 = 3 Resto = 1 3/2 = 1 Resto = 1 1/2 = 0 Resto = 1 0.375 * 2 = 0.75 P. Int. = 0 0.75 * 2 = 1.5 P. Int. = 1 0.5 * 2 = 1.0 P. Int. = 1

Page 8: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Subtrações sucessivas

�  Processo de conversão de decimal para outra base �  Método mais rápido do que o anterior �  Necessita que se saiba a tabuada das potências de 2

�  Como converter de decimal para binário �  Procura-se a maior potência de 2 imediatamente

inferior ao valor do número decimal e subtrai-se essa potência ao nº decimal

�  O expoente da potência indica que o número binário teria o bit 1 nessa ordem

�  Com o resultado da subtração repete-se o processo até chegar ao resultado 0

Page 9: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Tabuada das potências de 2

20 = 1 27 = 128

21 = 2 28 = 256

22 = 4 29 = 512

23 = 8 210 = 1024 (1 k)

24 = 16 211 = 2048

25 = 32 …

26 = 64 220 = 210 * 210 = 1 Mega

Page 10: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Subtrações sucessivas

�  Exemplo 1081.62510

1081.625 – 210 = 57.625

57.625 – 25 = 25.625

25.625 – 24 = 9.625

9.625 – 23 = 1.625

1.625 – 20 = 0.625

0.625 – 2-1 = 0.125

0.125 – 2-3 = 0

1 0 0 0 0 1 1 1 0 0 1 . 1 0 1

1024 512 256 128 64 32 16 8 4 2 1 0.5 0.25 0.125

210 29 28 27 26 25 24 23 22 21 20 2-1 2-2 2-3

Page 11: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Número de bits

�  Os processadores utilizam um determinado número de bits para representar um número

�  A quantidade de bits utilizados determina a gama de valores representáveis

�  Para uma base b com n dígitos a gama de valores representáveis é bn

�  Sendo n o número de bits utilizados, a gama de valores representáveis em binário usando n bits é 2n

Page 12: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Base hexadecimal

�  Normalmente usada como alternativa de representação de valores binários �  Conversão fácil entre hexadecimal e binário

�  Facilita a leitura e diminui a probabilidade de erro

�  Exemplo 431210 para hexadecimal 4312 / 16 = 269 Resto = 8 269 / 16 = 16 Resto = 13 (digito D)

16 / 16 = 1 Resto = 0 1 / 16 = 0 Resto = 1 Logo, 431210 = 10D816

Page 13: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Porque Hexadecimal?

�  Fácil converter entre hexadecimal e binário

�  Hexadecimal utiliza 16 dígitos (0,1,..,9, A, B, C, D, E, F) em que cada dígito representa um valor entre 0 e 15

�  Cada conjunto de 4 bits representa também um valor no mesmo intervalo

�  Como tirar partido desta característica ? �  Na conversão de binário para hexadecimal podemos

agrupar os bits em grupos de 4, a partir do ponto binário, e converte-los para hexadecimal

�  De hexadecimal para binário, converte-se cada dígito hexadecimal em binário usando 4 bits

Page 14: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Hexadecimal

�  Exemplos : conversão entre hexadecimal e binário

2 A F (hexadecimal)

0010 1010 1111 (binário)

2AF16 = 0010101011112

1101 0101 1011 (binário)

D 5 B

1101010110112 = D5B16 (ou 0xD5B ou 0xd5b)

Page 15: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Operações aritméticas em base 2

�  Adição binária �  Regras

�  0 + 0 = 0

�  0 + 1 = 1

�  1 + 0 = 1

�  1 + 1 = 0 (e “vai 1” para o dígito de ordem superior)

�  Exemplo 1012 + 0112

Page 16: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Subtração binária

�  Regras �  0 – 0 = 0

�  0 – 1 = 1 (e “pede emprestado 1” para o dígito de ordem superior)

�  1 – 0 = 1 �  1 – 1 = 0

�  Exemplo 1012 – 0112

Page 17: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Multiplicação binária

�  Regras �  0 x 0 = 0 �  0 x 1 = 0 �  1 x 0 = 0 �  1 x 1 = 1 Exemplo 1012 x 0112

�  Mesmo método do que o utilizado em decimal �  A divisão binária também utilizada o mesmo método

utilizado em decimal com deslocamentos e subtrações

Page 18: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Números negativos

�  Como representar o sinal negativo?

�  Existe uma grande variedade de opções, das quais se destacam 4 �  Sinal e amplitude/magnitude (S+M) �  Complemento para 1

�  Complemento para 2 �  Notação em excesso

Page 19: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Sinal e amplitude

�  Utiliza um bit para representar o sinal, o bit mais à esquerda �  0 representa valor positivo

�  1 representa valor negativo

�  Problema desta representação é de que as adições não podem usar o método tradicional utilizado no decimal. O que dificulta a sua implementação ao nível do hardware

Page 20: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Complemento para 1

�  Nesta representação invertem-se todos os bits de um número para representar o seu complementar

�  Assim se converte um valor positivo em negativo, e vice-versa

�  Quando o bit mais à esquerda é 0, esse valor é positivo, se for 1, então é negativo.

�  Exemplo �  10010 = 011001002 (com 8 bits) �  Invertendo todos os bits 100110112 = – 10010

Page 21: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Complemento para 2

�  O problema do complemento para 1 é o facto de ex is t i rem 2 padrões de b i ts para o 0 . Nomeadamente 010 = 000000002 = 11111112

�  Solução : representar os números em complemento para 2

�  Para determinar o negativo de um número negam-se todos os seus bits e soma-se uma unidade.

�  Uma forma mais rápida de calcular o complemento para 2 consistente em

�  Fixar o primeiro bit a 1 a contar da direita para a esquerda, e inverter os restantes bits

Page 22: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Complemento para 2

�  Exemplo 10010 = 011001002 (com 8 bits)

Invertendo todos os bits:

100110112

Somando uma unidade: 100110112 + 12 = 100111002 = – 10010

ou num só passo:

011001002 -> 100111002

Page 23: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Complemento para 2

�  Características �  O bit da esquerda indica o sinal

�  O processo anterior serve para converter um número positivo para negativo e de negativo para positivo

�  O zero tem uma única representação: todos os bits a 0

�  A gama de valores que é possível representar com n bits é -2n-1 …. 2n-1 – 1

�  Para n = 4 bits �  -23 ... 23 – 1 = -8 ... 7

Page 24: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Complemento para 2

�  Exemplo: Qual é o valor em decimal do binário 111001002 utilizando 8 bits ? �  Como o bit à esquerda é 1 este número é negativo

�  Invertendo todos os bits 000110112

�  Somando uma unidade: �  000110112 + 12 = 000111002 = 2810

�  Logo : 111001002 = -2810

Page 25: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Complemento para 2

�  Como é que se converte um número representado em complemento para 2 com n bits, para um número representado com mais bits?

�  Resposta : Extensão do sinal!

�  Exemplo �  Representar os seguintes números (de 8 bits) para 16

bits): �  011010102 => 00000000 011010102 (positivo)

�  110111102 => 11111111 110111102 (negativo)

Page 26: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Divisões e multiplicações por potências de 2

�  Multiplicação por potências de 2 �  deslocamento de bits para a esquerda

�  Divisão por potências de 2 �  Deslocamento de bits para a direita

�  Exemplos �  Dividir 110010102 (= 20210) por 4

�  Deslocar à direita 2 vezes (22 = 4)

�  00110010.12 = 50.510

�  Multiplicar 0000010102 (= 1010 ) por 8 �  Deslocar à esquerda 3 vezes (23 = 8)

�  0010100002 = 8010

Page 27: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Notação em excesso

�  Tem uma vantagem sobre todas as outras referidas �  O valor em binário com todos os bits a 0 representa o

menor valor inteiro, quer este tenha sinal ou não �  O valor em binário com todos os bits a 1 representa o

maior valor inteiro, com ou sem sinal

�  Como o próprio nome indica, esta codificação de um inteiro (negativo ou positivo) em binário com n bits é sempre feita em excesso (de 2n-1 ou 2n-1 -1)

Page 28: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Notação em excesso

No exemplo com 8 bits, o valor +110 é representado em binário, em notação por excesso de 2n-1, pelo valor (+110 + excesso = +110 + 12810 = 0000 00012 + 1000 00002 = 1000 00012)

Page 29: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Diferenças entre os 4 modos

Page 30: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Operações Aritméticas em Complemento para 2

�  Uma das vantagens do complemento para 2 é que podemos somar e subtrair 2 números sem ter que separar os bits de sinal

�  Se o resultado da operação aritmética for demasiado grande (positiva ou negativa) para caber no grupo de bits utilizado então ocorre overflow.

Page 31: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Somar valores com sinais diferentes

�  Nesta situação nunca ocorre overflow

�  Usar a regra da soma e descartar o carry – out bit

�  Exemplo 1): -8 + 3 utilizando 8 bits

(+3) 0000 0011 + (-8) 1111 1000

------------------------------- (-5) 1111 1011

Page 32: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Somar valores com sinais diferentes

�  Exemplo

2) -5 + (-2)

(-2) 1111 1110

+ (-5) 1111 1011

----------------------------

(-7) 11111 1001

-> Descartar o carry out bit.

Page 33: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Overflow na Soma

�  Se 2 números em complemento para 2 são somados e ambos tiverem o mesmo sinal (ambos positivos ou ambos negativos), então overflow ocorre só e somente só quando o resultado tem um sinal oposto

�  Regra do overflow na soma em compl. 2 �  (+ A) + (+ B) = -C => overflow �  (- A ) + (- B) = +C => overflow

Page 34: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Overflow na soma

�  Exemplo : Usando 2 valores em complemento para 2 com 4 bits ( [-8, +8[ )

1001 (-7) + 1010 (-6)

--------------------- 10011 => Overflow

Page 35: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Subtração em Compl. 2 �  Normalmente, negamos o que queremos subtrair e

aplicamos a soma.

�  Qualquer carry out é descartado.

�  Exemplo : +8 - (+5) usando 8 bits

510 = 0000 01012

-510 = 1111 10102 (em comp. para 2)

+8 – (+5) = +8 + (-5)

0000 1000 (+8)

+ 1111 1011 (-5)

--------------------------------------

10000 0011 (+3) => descartar o carry-out

Page 36: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Overflow nas subtrações

�  Se 2 números em complemento para 2 são subtraídos e os seus sinais são opostos, então ocorre overflow se e só se o resultado tem o mesmo sinal do valor que estamos a subtrair

�  Overflow ocorre se: �  (+A) – (-B) = -C

�  (-A ) – (+B) = +C

Page 37: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Overflow na subtração

�  Exemplo: +7 – (-6) com 4 bits em compl. para 2 ([-8,+8[)

-610 = 1010

+7 – (-6) = +7 + 6

0111

+ 0110 ---------------

1101

Page 38: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Sumário: Aritmética Comp. 2

�  Soma �  Somar os valores e descartar o carry- out bit.

�  Subtração �  Negar o valor a subtrair, somar e descartar o carry

out

�  Overflow: �  Somar 2 valores positivos e o resultado é negativo

�  Somar 2 valores negativos e o resultado é positivo �  Somar 2 valores de sinais diferentes não causa

overflow.

Page 39: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

TPC

�  O enunciado do TPC1 que está na página deve ser impresso e levado obrigatoriamente para as sessões das próximas aulas Teórico Práticas

�  Ver material de apoio

Page 40: Sistemas de Computação - ALFAalfa.di.uminho.pt/~brunom/SC_M1.pdfSistemas de numeração ! Os números podem ser representados em diferentes sistemas de numeração ! Humanos, normalmente

Referências �  Material de apoio do Prof. Alberto Proença - Universidade

do Minho �  http://gec.di.uminho.pt/lcc/sc0809/Acetatos/

RepresNum_Mar04.pdf

�  Problemas com Sinal e Magnitude �  https://chortle.ccsu.edu/AssemblyTutorial/Chapter-08/

ass08_13.html

�  Bernardo Nunes Gonçalves - Universidade Federal do Espirito santo �  Aritmetica Binaria e Complemento a Base �  h t t p : / / w w w . i n f . u f e s . b r / ~ z e g o n c / m a t e r i a l /

I n t r o d u c a o _ a _ C o m p u t a c a o /Aritmetica_binaria_Complemento.pdf