FAC - Universidade Federal Fluminenseboeres/slides_FAC/parte5.pdf · 2013-10-09 · 12 Bit n-1 tem...
Transcript of FAC - Universidade Federal Fluminenseboeres/slides_FAC/parte5.pdf · 2013-10-09 · 12 Bit n-1 tem...
2
Dois tipos de complemento • Complemento a base • Complemento a base menos um • Por isso temos complemento a 2 (base 2) e
complemento a 1 (base 2 -1 )
3
Significado: o que falta para completar um valor • Por exemplo: complemento de um ângulo
agudo é o que falta para chegar a 900
Em operações aritméticas • o que falta a um número N para chegar ao
valor da base
Complemento a base de N Bn – N • N = o número • n = quantidade de algarismos utilizados
4
Seja n = 5 (5 dígitos) Base 10 e N = (763)10
• C10 de N: 105 – (763)10 = (99237)10
Base 2 e N = (110)2 • C2 de N: 25 – (110)2 = (11010)2
5
Na prática, cálculo de complemento na base (fica mais rápido) 1. Subtrair N do maior algarismo na base
considerada 2. Somar 1 ao resultado
Na base 2, colocar 1 em cada algarismo • A etapa 1 define complemento a 1 (C1), ou
seja, complemento a B -1
6
Base 2 e N = (110)2 • Vimos que C2 de N: 25 – (110)2 = (11010)2
• Analogamente:
Maior número 1 1 1 1 1 N 0 0 1 1 0 subtração 1 1 0 0 1 Soma 1 0 0 0 0 1 resultado 1 1 0 1 0
7
Para realizar C2 mais rapidamente: 1. Inverter cada algarismo de N 2. Somar 1 ao resultado
N 0 0 1 1 0 inversão 1 1 0 0 1
Soma 1 0 0 0 0 1 resultado 1 1 0 1 0
8
Vantagens: • Representação única do zero • A UAL só tem somador para fazer + e –,
pois: – A – B = A + (C2 (B))
– É preciso considerar os n dígitos da representação de dados
9
Seja n = 6 o número de dígitos • 2n = 26 combinações
Primeiro número não negativo 000000 • Primeiro zero – sinal
C2 (000000) • 000000 111111 + 1 000000 • O vai 1 no 7º dígito é ignorado
10
Logo assimetria na representação de números tanto positivos quanto negativos
Então com n dígitos, a faixa de representação será
- (2n-1 -1) a (2n-1 – 1)
11
Também utiliza bit de sinal (sabendo assim se o número é positivo ou negativo) • Diferente da representação sinal magnitude na forma
como os bits são interpretados
Com n bits
Bits n-1 é indica se o número é positivo ou negativo, mas não é simplesmente o sinal
12
Bit n-1 tem valor 0 positivo , os outros bits são tratados como na
representação sinal magnitude • de 0 a 2n-1 -1 • Se bit de sinal é zero, o peso do dígito n-1 é zero no somatório
que calcula o número
Bit n-1 tem valor 1
o peso é 2n-1, que é subtraído do somatório
Faixa de representação de números
-2n-1 .... + (2n-1 -1 )
13
Entendendo na base decimal Somar (+15) com (-12) considerando n=4 Maior número decimal com 4 dígitos: 9999
– 9999 – 12 = 9987
– 9987+1 = 9988
1 1 1 1
9 9 8 8
0 0 1 5
1 0 0 0 3 vai um desprezado!
14
Entendendo na base decimal Somar (-15) com (-12) considerando n=4 Maior número decimal com 4 dígitos: 9999
• Complemento a 10 de – -15 : 9999 – 15 + 1 = 9985 – - 12 : 9999 – 12 +1 = 9988
1 1 1 1
9 9 8 5
9 9 8 8
1 9 9 7 3 vai um desprezado!
15
Entendendo na base decimal Resultado = 9974 é o complemento de:
• 9999-9973 = 26 • 26 + 1=27 • Como os dois são negativos, resultado:
-27
16
Soma Somar bit a bit inclusive o bit de sinal Seja um número em C2 com n dígitos
Ao somar, pode ocorrer i. vai-um para fora do número ii. vai-um do sinal
0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1
sinal bits da magnitude
17
Se ocorrer i. e ii. sem overflow se i. e ii. não ocorrerem sem overflow Se apenas um ocorrer overflow
Pode tratar overflow se • Ambos os números possuem o mesmo sinal
e o sinal do resultado é oposto dos números
19
Representação com n = 16
+ 75 para C2?
+ 75 em binário 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1
C2, pois é número + 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1
22
Representação com n = 16
-119 em C2?
-119 em binário 1 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1
Inverte, mantendo sinal
1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0
23
Representação com n = 16
-119 em C2?
-119 em binário 1 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1
Inverte, mantendo sinal
1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0
Soma 1 é o C2 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 1
25
Qual é o valor decimal correspondente ao binário em C2?
binário 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1
É negativo 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1
26
Qual é o valor decimal correspondente ao binário em C2?
binário 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1
É negativo 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1
Inverte a magnitude 1 0 0 0 1 1 0 0 1 0 0 0 1 1 1 0
27
Qual é o valor decimal correspondente ao binário em C2?
Calculando o inteiro: • 211+210+27+23+22+21+20 = • 2048 + 1024 + 128 + 8 + 4 + 2 + 1 = 3215
-3215
binário 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1
É negativo 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1
Inverte a magnitude 1 0 0 0 1 1 0 0 1 0 0 0 1 1 1 0
Soma 1 1 0 0 0 1 1 0 0 1 0 0 0 1 1 1 1
28
Qual é o valor decimal correspondente ao binário em C2? outra forma de calcular – pela definição de C2
Calculando o inteiro:
• -32768+ 16384+ 8192+ 4096+ 512+ 256+ 64+ 32 + 16 + 1= -3215
binário 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1
É negativo 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1
posição 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
no somatório -215 214 213 212 0 0 29 28 0 26 25 24 0 0 0 20
30
Somar 1100 e 1011 que estão em SM • Os dois são negativos: -4 e -3 respectivamente • Resultado é negativo
Não ocorre i. e ii. sem overflow
-4 1 1 0 0
-3 1 0 1 1
-7 1 1 1 1
31
soma de 1100 e 1011 passando para C2
Vai um para o bit de sinal e ai, vai um para fora do número devido aos sinais negativos – logo correto
– O resultado é o C2 de -7
1 1
C2(-4) 1 1 0 0
C2(-3) 1 1 0 1
somando 1 0 0 1
resultado 1 0 0 1
35
Somar 0100 e 0110
Os dois são positivos – estão em SM
– Overflow: pois dois números positivos não dá negativo (vai um para o bit de sinal que não vai um outra vez é incorreto)
1
0 1 0 0
0 1 1 0
somando 1 0 1 0
37
Somar 1010 e 1101 que estão em C2
Só para saber o decimal correspondente: • Passar para SM • 1 010 inverte magnitude 1 101 • Soma 1 1 110 • Logo 1010 em C2 é -6 em decimal • No caso de 1101 em C2 é -3 em decimal
39
Então somar 1010 e 1101 que estão em C2
Está incorreto, pois dá positivo a soma de dois números negativos (não vai um na magnitude e vai um no sinal overflow).
1
1 0 1 0
1 1 0 1
somando 0 1 1 1
40
Então somar 1010 e 1101 que estão em C2
Está incorreto, pois dá positivo a soma de dois números negativos (não vai um na magnitude e vai um no sinal overflow).
1
1 0 1 0
1 1 0 1
somando 0 1 1 1
41
Soma – somas normais
Subtração – soma com C2 do minuendo (qualquer que seja o sinal)
Se resultado é positivo: valor decimal corresponde ao da magnitude
Se resultado é negativo: converter para SM para saber decimal
42
Quando o resultado de uma operação aritmética é maior do que o número de bits pode representar
O processador deve sinalizar quando ocorre overflow • Por que?
43
Um caractere representado por um padrão de bits Vários dispositivos de entrada e saída trabalham com
8 bits
Um código padrão denominado ASCII (American Standard for Computer Information Interchange) • define um padrão de sequência diferente para cada
caractere
44
Exemplo: 0100 0001 é 41hex ou 6510 e representa o caracter 'A‘
0100 0010 é 42hex ou 6610 e representa o caracter 'B'
Uma propriedade do ASCII é que se padrões de bits são comparáveis • 'A' <'B‘? • Útil para ordenação alfabética
45
Atenção:
'a'(61hex) é diferente de 'A' (41hex) '8' (38hex) é diferente do inteiro 8
• Representação ASCII do caracter '8': 0011 1000 Representação ASCII do caracter '0' é 48 (decimal) ou 30 (hex) Representação ASCII do caracter '9' é 57 (decimal) ou 39 (hex)
46
Como traduzir um string de caracteres para inteiro? • O menor caracter “vale” 48
string '354‘ para seu inteiro
Lê '3' Traduz '3' para 3 : do código ASCII subtrai 48 inteiro= 3 ×102 = 300
Lê '5' Traduz '5' para 5: do código ASCII subtrai 48 inteiro= inteiro + 5 ×101 = 350
Lê '4' Traduz '4' para 4 : do código ASCII subtrai 48 inteiro= inteiro + 4 ×100 = 354