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