SEPS REPRESENTAÇÃO DE Nºs DIGITAIS I Representação binária inteira sem sinal Exemplo: adição dos nºs 5 e 4 representados com 3bit 1 (5) + 0 (4) 1 001 resultado com 3 bit: errado Se ignorarmos o bit de transporte (carry) o resultado fica errado Obtém-se a representação do número resultante módulo 2 n onde n éo número de bits (9 mod 2 3 = 1 no exemplo anterior) Com n bits podem representar-se os números inteiros i no intervalo 6 1 Roda dos números: Números inteiros sem sinal 7 111 5 1 n 0 000 4 0 0 i 2 1 1 001 3 011 2 0 1
SEPS REPRESENTAÇÃO DE Nºs DIGITAIS II Representação binária inteira com sinal: números negativos representados em complemento para 1 O MSB é o bit de sinal Calcula-se pela equação i + i = 111 11 complemento para 1 n bit que equivale a considerar para i complemento para 1 o complemento lógico de i (negação bitwise) i complemento para 1 Com n bits podem representar-se os números inteiros i no intervalo A representação decimal é = (2 1) i 2 1 i Números inteiros com sinal: complemento para 1-1 1 X 111-2 1 0 000-3 0 1 001 3 011 2 0 As palavras 000 000 e 111 111 representam o mesmo número, zero n 2 b = n 2 0 d = + k k = 0 i b b b i b (2 1) b 2 k 2
SEPS REPRESENTAÇÃO DE Nºs DIGITAIS III Representação binária inteira com sinal: números negativos representados em complemento para 2 É o sistema de representação mais utilizado O MSB é o bit de sinal Calcula-se pela equação i complemento para 2 = icomplemento para 1 + 1 = i + 1 Com n bits podem representar-se os números inteiros i no intervalo 2 i 2 1 A representação decimal é n 2 b = n 2 0 d = + k k = 0 i b b b i b 2 b 2 Números inteiros com sinal: complemento para 2-2 1-1 111-3 1 k 0 000-4 0 cuidado com este número! 1 001 3 011 2 0 3
SEPS REPRESENTAÇÃO DE Nºs DIGITAIS IV Adição de números com representação em complemento para 2: A unidade aritmética em complemento para 2 permite realizar somas que originam overflows sem que o resultado final esteja errado, desde que este possa ser representado na gama dinâmica da unidade aritmética Exemplo: Cálculo Cálculo da da soma soma 3+6+1-4=6 com com números de de 4 bit bit que que permitem a representação entre entre [-7, [-7, 7] 7] em em complemento para para 1 e e entre entre [-8, [-8, 7] 7] em em complemento para para 2 0011 (3) + 01 (6) 01 (-6 9) errado! + 0001 (1) (-5 ) errado! + 11 (-4) 1 01 (5 6) errado! 0011 (3) + 01 (6) 01 (-7 9) errado! + 0001 (1) (-6 ) errado! + 10 (-4) 1 01 (6=6) certo! Complemento para 1 Complemento para 2 4
SEPS REPRESENTAÇÃO DE Nºs DIGITAIS V Característica de uma ALU em complemento para 2: Nº de saída 1 Modo de saturação -1 0 1 Nº de entrada Em algumas aplicações a descontinuidade da característica de entrada/saída pode provocar erros grosseiros e instabilidade na realização de sistemas, por exemplo no cálculo de filtros. Nestes casos é preferível uma característica de saturação (semelhante à dos amplificadores analógicos) Por exemplo, no processador TMS320C2x as instruções assembly: ROVM Reset overflow mode SOVM Set overflow mode permitem introduzir ou retirar o modo de saturação da ALU A descontinuidade da característica permite realizar osciladores de relaxação somando a uma variável (acumulador), repetidamente, um valor adequado: short rampa, delta=0x00; while(1) { while(amostra_disponivel == 0); // espera intervalo de amostragem } amostra_disponivel = 0; rampa += delta; -1 // calcula rampa 5
SEPS REPRESENTAÇÃO DE Nºs DIGITAIS VI Multiplicação de números inteiros com sinal (complemento para 1 ou 2) A multiplicação de dois números de n bitcada com sinal produz um resultado com 2n bitdos quais dois são de sinal (1 bit de sinal repetido). O resultado pode ser representado com apenas (2n-1) bit Exemplo: quadrado do número mais negativo em complemento para 2 2n 2 2 ( 2 ) = 2 que é representável em 2n-2 bit + 1 bit de sinal = 2n-1 bit A multiplicação deve ser feita com extensão do sinal até aos 2n bit Exemplo: Exemplo: Cálculo Cálculo do do produto produto -4 6=-24-4 6=-24 com com números números de de 44 bit bit 10 (-4) 111110 (-4) 01 (6) 01 (6) 0000 00000000 10 11110 100 10 1110 = 00111 0000 (78) 1 1100 (-24) resultado errado! necessário fazer extensão de sinal Carry (bit de transporte) São gerados 2 bit de sinal! extensão de sinal 7 bit seriam suficientes Verificação + 1 00100 (24) 6
SEPS REPRESENTAÇÃO EM VÍRGULA FIXA I Representação binária em vírgula fixa com parte inteira e fraccionária Maior precisão: s e I-1 e 1 e 0 f 0 f 1 f F-1 ponto binário implícito amplitude da parte inteira (I bit) parte fraccionária (F bit) A parte inteira é nula e os números (de n bit) são representados apenas no intervalo -1 a +1 (aproximadamente, dependendo da representação) Obtém-se a partir de uma representação binária inteira com sinal deslocando o ponto binário de n-1 bit para a esquerda (ou seja, dividindo o número inteiro por 2 n-1 ) Exemplo: (em complemento para 2) n -1 11 (-2) dividindo por 2 = 8 1.1 (-0.25) 7
SEPS REPRESENTAÇÃO EM VÍRGULA FIXA II Nesta representação (com nbits) 1 bit é de sinal, não existem bits para a parte inteira e n-1 bit ficam para a parte fraccionária: Notação Q n-1 Em geral: palavras de n bit, com 1 bit de sinal, i = n 1-m para a amplitude da parte inteira e mbitpara a parte fraccionária: Notação Q m Em complemento para 2, permite representar números no intervalo: i i m 2 x 2 2 Exemplo: representar o número número x x = -0.123456789, com com a máxima precisão no no TMS320C6416 (16 (16 bit, bit, vírgula vírgula fixa) fixa) Como Como o o processador processador éé de de 16 16bit bite e x x <1, <1, a a notação notação adequada adequada éé Q 15, 15, ou ou seja seja m =15 =15 e e i=0. i=0. Para Para encontrar encontrar o o valor valor decimal decimal do do número número éénecessário necessário multiplicá-lo multiplicá-lo por por 22 m m =2 =2 n-1 n-1 = 22 15 15 :: 15 x d = 2 x = 4045.43 Este Este valor valor deve deve ser ser arredondado arredondado para para as as unidades unidades produzindo produzindo o o valor valor final: final: 4045 = -(0x0FCD)= 0xF032+1= 0xF033 8
SEPS REPRESENTAÇÃO EM VÍRGULA FIXA III Na multiplicação de números fraccionários em vírgula fixa, é necessário retirar os bits de sinal repetidos (o que não acontece com a representação de números inteiros), caso contrário o resultado vem errado Exemplo: Exemplo: Cálculo Cálculo do do produto produto -0.50 0.75=-0.375-0.50 0.75=-0.375 com com números números de de 44 bit bit representados representados em em Q 3 (maior 3 (maior precisão precisão possível) possível) extensão de sinal Carry (bit de transporte) 111110 (-0.5) 01 (0.75) 00000000 11110 100 1110 = 00111 1 1100 (-0.375) têm de ser guardados estes 7 bit! São gerados 2 bit de sinal! (comparar (comparar com com a a multiplicação multiplicação de de dois dois números números inteiros inteiros com com sinal sinal no no slide slide #6...) #6...) Verificação + 1 00100 (0.375) 9
SEPS REPRESENTAÇÃO EM VÍRGULA FIXA IV Produto de dois nºs com n bit em formatos genéricos: Q m Q k s i i i f f f s 644474448 m m 644474448 644474448 k k 644474448 s i i i f f f 644474448 2n 2 m k m+ k+ 1 n 644474448 6447448 s i i i f f f 1444444442444444443 palavra de n bit que deve ser guardada em Q m + k + O formato resultante é Q m+k+1-n 1-n f Para guardar o resultado numa palavra de n bit neste formato é necessário deslocar para a esquerda 1 bit (eliminando o bit de sinal) e guardar a parte alta da palavra de 2n bit Pode utilizar-se um formato mais preciso desde que o resultado da multiplicação seja representável... f
SEPS REPRESENTAÇÃO EM VÍRGULA FIXA V Exemplos com palavras de n bit: Q n-1 Q n-1 ï pode sempre guardar-se em Q n-1 porque x y 1 644474448 644474448 s f f f s f f f s s f f f f f f 1444442444443 palavra de n bit que pode sempre ser guardada em n Q n-2 Q n-2 ï pode sempre guardar-se em Q n-3 porque x y 4 Q 1 f 6447448 6447448 s i f f s i f f s s i i f f f f 1444442444443 palavra de n bit que pode sempre ser guardada em n mas que se pode representar em Q n-2 se se verificar x y 2 Q 3 f 6447448 passa a ser o bit de sinal! 6447448 s i f f s i f f s s i i f f f f 1444442444443 ou em Q n-1 se x y 1 palavra de n bit que pode ser guardada em Qn 2 se x y 2 6447448 passam a ser bits de sinal! 6447448 s i f f s i f f s s i i f f f f 1444442444443 palavra de n bit que pode ser guardada em Q se x y 1 f f 11
SEPS REPRESENTAÇÃO EM VÍRGULA FLUTUANTE I Standard IEEE 754: representação em vírgula flutuante com precisão simples (32 bit): 31 30 29 23 22 s e 7 e 6 e 7 e 1 e 0 m 1 m 2 m 22 m 23 s = bit de sinal (0 = positivo, 1 = negativo) e = [e 7 e 0 ] é o expoente (8 bit) que tem o valor decimal 7 e = e 2 0 e 255 k = 0 k k O valor e=0 é reservado para representar o número zero. O valor e = 255 é reservado para representar NaN e infinito m=[m 1 m 23 ] é a mantissa ou parte fraccionária (23 bit) e tem o valor decimal 23 m = m 2 0 m 1 2 k = 1 k k ponto decimal 23 1 0 que corresponde à palavra binária 0.m 1 m 2 m 23 12
SEPS REPRESENTAÇÃO EM VÍRGULA FLUTUANTE II O valor numérico do número x é determinado pelas seguintes regras: 1. Se e = 255 e m 0 então x é NaN, independentemente de s 2. Se e = 255 e m = 0 então x = (-1) s 3. Se 0 < e < 255 então s e 127 4. Se e = 0 e m = 0 então x = (-1) s 0 Exemplos: Maior positivo: s = 0, e = 254, m = 1-2 -23 1 0 2 2 (2 1) x Menor positivo: s = 0, e = 1, m = 0 x = ( 1) 2 (1 + m) e e m = ( 1) 2 (1+ 1 2 ) 0 254 127 23 128 4 38 = ( 1) 2 (2 2 ) = 2 2 3.4 x e 1 0 1 (2 1) = ( 1) 2 (1+ 0) 0 1 127 126 38 = ( 1) 2 = 2 1.17 13
SEPS REPRESENTAÇÃO EM VÍRGULA FLUTUANTE III Características da representação em vírgula flutuante float double long double byte/bit 4/32 8/64 /80 expoente (bits) 8 11 15 mantissa (bits) 23 52 64 precisão * 7 16 21 maior positivo 128 38 2 = 3.4 24 308 2 = 1.8 16384 4932 2 = 1.2 menor positivo 126 38 2 = 1.17 22 308 2 = 2.2 16382 4932 2 = 3.4 * limite aproximado de representação da mantissa expresso em casas decimais 14