Representação de números com sinal

Propaganda
Sistemas Digitais / Sistemas Digitais I
6 – Representação de números com sinal
Os números têm valores negativos e positivos. Como representar essa
informação (sinal do número) em binário? Por outras palavras, como
representar o positivo (+) e o negativo (-)?
Há três formas de o fazer:
Representação em sinal e grandeza
Representação em complemento para 2
Representação em complemento para 1
SD / SD1 - Representação de números com sinal (6)
1
Representação em sinal e grandeza
O bit mais à esquerda é o bit de sinal; os restantes bits representam a
amplitude do sinal em binário.
s A3A2A1A0
Bit de sinal:
0 - positivo
1- negativo
Existem duas representações para o 0:
1000 = -0
0000 = +0
Exemplo com 8 bits:
+810 = 00001000
-810 = 10001000
Requerem demasiado hardware para a adição e subtracção.
SD / SD1 - Representação de números com sinal (6)
Filipe Moreira
ESTiG, IPB
2
SD / SD1 – 2000/01
Pág. 1
Sistemas Digitais / Sistemas Digitais I
6 – Representação de números com sinal
Representação em Complemento para 2
Existe apenas um zero
Existe um número negativo a mais do que os números positivos
Se o bit mais à esquerda for 1, o número é negativo; se for 0, o número é
positivo
É importante respeitar o número de bits
Gama de representação: - 2k-1 a +(2k-1 – 1), em que k é o número de bits
N.º
0
+1
+2
+3
+4
+5
+6
+7
-8
-7
-6
-5
-4
-3
-2
-1
CP2 (com 4 bits)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
SD / SD1 - Representação de números com sinal (6)
3
Operação complemento para 2
n.º de bits
CP2 = 2k – N
resultado
em binário
operando
Exemplo:
Complementar 0011(+3)
CP2 = 10000 – 0011 = 1101 (-3)
Regra prática:
Avançando do bit mais à direita para a esquerda
Até ao primeiro 1 inclusive: mantém o valor
Depois do primeiro 1 e até ao final: complementam-se os bits
Exemplo:
01101000
CP2 = 10011000
SD / SD1 - Representação de números com sinal (6)
Filipe Moreira
ESTiG, IPB
4
SD / SD1 – 2000/01
Pág. 2
Sistemas Digitais / Sistemas Digitais I
6 – Representação de números com sinal
Conversão de decimal para complemento para 2
N
Amplitude
(binário)
>0
Sinal de N
<0
CP2 (Amp.)
fim
fim
SD / SD1 - Representação de números com sinal (6)
5
Exemplos:
+6
Com 4 bits
amp. = 0110
CP2 = 0110
-6
amp. = 0110
CP2 = 1010
+36
Com 8 bits
amp. = 00100100
CP2 = 00100100
-36
amp. = 00100100
CP2 = 11011100
-128
amp. = 10000000
CP2 = 10000000
SD / SD1 - Representação de números com sinal (6)
Filipe Moreira
ESTiG, IPB
6
SD / SD1 – 2000/01
Pág. 3
Sistemas Digitais / Sistemas Digitais I
6 – Representação de números com sinal
Conversão de complemento para 2 para decimal
N
(em CP2)
0
bit da esquerda
Amplitude
fim
1
CP2 (N)
Amplitude
-Amplitude
fim
SD / SD1 - Representação de números com sinal (6)
7
Exemplos:
0101
1011
11001101
Com 4 bits
amp. = 5
dec. = +5
0101
amp. = 5
dec. = -5
Com 8 bits
00110011
amp. = 51
dec. = -51
SD / SD1 - Representação de números com sinal (6)
Filipe Moreira
ESTiG, IPB
8
SD / SD1 – 2000/01
Pág. 4
Sistemas Digitais / Sistemas Digitais I
6 – Representação de números com sinal
Representação em Complemento para 1
Existem dois zeros
Existe o mesmo número de números negativos e positivos
Se o bit mais à esquerda for 1, o número é negativo; se for 0, o número é
positivo
É importante respeitar o número de bits
Gama de representação: - (2k-1-1) a +(2k-1 – 1), em que k é o número de
bits
N.º
CP2 (com 4 bits)
0
+1
+2
+3
+4
+5
+6
+7
-7
-6
-5
-4
-3
-2
-1
0
SD / SD1 - Representação de números com sinal (6)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
9
Operação complemento para 1
n.º de bits
CP1 = (2k –1) – N
resultado
em binário
operando
Exemplo:
Complementar 0011(+3)
CP1 = 1111 – 0011 = 1100 (-3)
Regra prática:
Complementam-se todos os bits
Exemplo:
01101000
CP1 = 10010111
SD / SD1 - Representação de números com sinal (6)
Filipe Moreira
ESTiG, IPB
10
SD / SD1 – 2000/01
Pág. 5
Sistemas Digitais / Sistemas Digitais I
6 – Representação de números com sinal
Conversão de decimal para complemento para 1
N
Amplitude
(binário)
>0
Sinal de N
<0
CP1 (Amp.)
fim
fim
SD / SD1 - Representação de números com sinal (6)
11
Exemplos:
+4
Com 4 bits
amp. = 0100
CP1 = 0100
-4
amp. = 0100
CP1 = 1011
+36
Com 8 bits
amp. = 00100100
CP1 = 00100100
-36
amp. = 00100100
CP1 = 11011011
-127
amp. = 01111111
CP1 = 10000000
SD / SD1 - Representação de números com sinal (6)
Filipe Moreira
ESTiG, IPB
12
SD / SD1 – 2000/01
Pág. 6
Sistemas Digitais / Sistemas Digitais I
6 – Representação de números com sinal
Conversão de complemento para 1 para decimal
N
(em CP1)
0
bit da esquerda
Amplitude
fim
1
CP1 (N)
Amplitude
-Amplitude
fim
SD / SD1 - Representação de números com sinal (6)
13
Exemplos:
0101
1010
11101101
Com 4 bits
amp. = 5
dec. = +5
0101
amp. = 5
dec. = -5
Com 8 bits
00010010
amp. = 18
dec. = -18
SD / SD1 - Representação de números com sinal (6)
Filipe Moreira
ESTiG, IPB
14
SD / SD1 – 2000/01
Pág. 7
Sistemas Digitais / Sistemas Digitais I
6 – Representação de números com sinal
Soma e subtracção em complemento para 2
Na subtracção A – B, faz-se A + (-B) pela passagem de –B em CP2, seguido da
soma com A.
O Número de bits mantém-se
Exemplos:
5+6
00101
+ 00110
01011
(+5)
(+6)
(+11)
5–6
5 + (-6)
CP2 (-6) = 11010
00101 (+5)
+ 11010 (-6)
11111 (-1)
SD / SD1 - Representação de números com sinal (6)
-5 + 6
ignora-se
11011
+ 00110
100001
00001
15
(-5)
(+6)
(+1)
Como o contador é de apenas 5 bits, o último (6º) bit - bit mais à esquerda - é ignorado.
-5 - 6
ignora-se
10 + 12
11011 (-5)
+ 11010 (-6)
1 10101
10101 (-11)
01010
+ 01100
10110
(+10)
(+12)
(-??)
out of range
SD / SD1 - Representação de números com sinal (6)
Filipe Moreira
ESTiG, IPB
16
SD / SD1 – 2000/01
Pág. 8
Sistemas Digitais / Sistemas Digitais I
6 – Representação de números com sinal
Soma e subtracção em complemento para 1
Na subtracção A – B, faz-se A + (-B) pela passagem de –B em CP1, seguido da
soma com A.
O Número de bits mantém-se
Exemplos:
5+6
00101
+ 00110
01011
(+5)
(+6)
(+11)
5–6
5 + (-6)
CP1 (-6) = 11001
00101 (+5)
+ 11001 (-6)
11110 (-1)
SD / SD1 - Representação de números com sinal (6)
17
-5 + 6
11010 (-5)
+ 00110 (+6)
1 00000
overflow
+1
00001 (+1)
Como o contador é de apenas 5 bits, o último (6º) bit - bit mais à esquerda - é separado e
adicionado ao resultado anterior.
-5 - 6
11010 (-5)
+ 11001 (-6)
1 10011
overflow
+1
10100 (-11)
-7 - 6
1000
+ 1001
1 0001
+1
0 010
overflow
out of range
SD / SD1 - Representação de números com sinal (6)
Filipe Moreira
ESTiG, IPB
(-7)
(-6)
(+??)
18
SD / SD1 – 2000/01
Pág. 9
Sistemas Digitais / Sistemas Digitais I
6 – Representação de números com sinal
Bit de paridade
Usado como indicador da existência de um erro (troca de um bit) num
conjunto de bits (palavra).
É o bit mais à esquerda.
Paridade par: o bit de paridade será 0 ou 1 de modo a que o número
de 1’s na palavra seja par.
Exemplos:
0 1100101
1 0111000
Paridade ímpar: o bit de paridade será 0 ou 1 de modo a que o
número de 1’s na palavra seja ímpar.
Exemplos:
0 1001010
1 0011011
SD / SD1 - Representação de números com sinal (6)
Filipe Moreira
ESTiG, IPB
19
SD / SD1 – 2000/01
Pág. 10
Download