Prof. Luís Caldas Sistemas de Numeração e Transformação de Base NUMERAÇÃO, BASE NUMÉRICA E TRANSFORMAÇÃO DE UMA BASE Os números são na verdade coeficientes de uma determinada base numérica e podem ser representados como números assinalados, não assinalados, em complemento numérico 1, em complemento numérico 2 ou na forma exponencial etc... Para todas as formas de representação do número existe uma determinada base onde o número é definido. A base numérica mais conhecida e utilizada é a base 10. Por exemplo, o número (21)10, corresponde a soma de 2 x 10 + 1, onde os coeficientes do número são 2 e 1 respectivamente. Podemos representar os números na base 10 da forma. Por exemplo, para um número na base 10 com 04 dígitos 1245, pode ser representado como : N = 1x 103 + 2 x 102 + 4 x 101 + 5 x 100 Assim qualquer número em qualquer base pode ser representado por : N = an-1 Bn-1 , an-2Bn-2 , an-3Bn-3 , .......... , a1B1 , a0B0 , onde n > 0 e B > 1. Onde 0 ≤ a < B. A tabela a seguir apresenta os coeficientes dos números As bases abaixo apresentadas são : 10,8,16 e 2. As bases 10, conhecida como decimal, a base 8 como octal, a base 16 como hexadecimal e por fim a base 2 como binária. Base 16 0 Base 10 0 1 Base 8 0 1 Base 2 0 1 1 2 3 4 5 6 7 2 3 4 5 2 3 4 5 8 9 A 6 7 8 6 7 B C D E F 9 CODIFICAÇÃO BINÁRIA, BINÁRIA DECIMAL E OUTROS CÓDIGOS. Os números em qualquer base numérica podem ser codificados. A codificação utilizada para o computador entender é a codificação binária. A base pode ser 2,3,4,.....,10,...etc..., e o coeficiente da base estará codificado em binário segundo um código estabelecido. O código binário é especificado por bits individuais, onde 1 bit é o menor valor numérico e pode valer 0 ou 1. As tabelas abaixo mostram os alguns dos códigos binário existentes e como são montados os coeficientes de uma base. Por exemplo um número na base 16, cuja faixa vai de 0 a F é codificado pelo código conhecido como 8-4-2-1. Este código possui 4 bits, sendo o bit-8 o mais significativo por ter o maior peso igual a 8 e é tratado como MSB e o bit-1 o menos significativo por ter o menor peso igual a 1 e é tratado como LSB. Este código é muito utilizado para codificar números na base 2. Se o estudante utilizar a expressão que transforma um número de qualquer base para a base 10, se chega no porque 8-4-2-1. Como são 4 bits, o valor será : N = a3 23, a2 22, a1 21 e a0 20 , os valores de a0, a1, a2 e a3 são valores binários {0 e 1}. Pág. 1 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base Para calcular os pesos deve-se fazer os coeficientes iguais a 1 ou seja : a3 = a2 = a1 = a0 = 1, os pesos serão : 8, 4, 2 e 1. A tabela da verdade a seguir mostra os números codificados em binário no código 8-4-2-1. Chamando cada bit de A(MSB), B, C e D (LSB). Um código utilizado para representar números na base 10 é conhecido como BCD, ou seja codificação binária decimal, onde os números são codificados como 8-4-2-1 mas variam de 0 até 9, que é a faixa de operação dos números decimais. Para não bitolar que o código sempre tem a mesma lei de formação da conversão dos números transformados para a base 10, apresentamos mais 02 codificações, o código X3, conhecido como excesso 3 e o o código 5-2-1-1. A única exigência é que os coeficientes de qualquer código sejam binários {0 e 1}. BASE 16 CÓD. N 8 4 N A B 0 0 0 1 0 0 2 0 0 3 0 0 4 0 1 5 0 1 6 0 1 7 0 1 8 1 0 9 1 0 A 1 0 B 1 0 C 1 1 D 1 1 E 1 1 F 1 1 8-4-2-1 2 1 C D 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 BASE 10 CÓD. 5-2-1-1 N 5 2 1 1 N A B C D 0 0 0 0 0 1 0 0 0 1 2 0 0 1 1 3 0 1 0 1 4 0 1 1 1 5 1 0 0 0 6 1 0 0 1 7 1 0 1 1 8 1 1 0 1 9 1 1 1 1 BASE 10 CÓD. BCD BASE 10 CÓD. X3 A B C D N 8 4 2 1 N N A B C D 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 2 0 1 0 1 2 0 0 1 0 3 0 1 1 0 3 0 0 1 1 4 0 1 0 0 4 0 1 1 1 5 0 1 0 1 5 1 0 0 0 6 0 1 1 0 6 1 0 0 1 7 0 1 1 1 7 1 0 1 0 8 1 0 0 0 8 1 0 1 1 9 1 0 0 1 9 1 1 0 0 BASE 10 CÓD. – X5 N A B C D 0 0 0 0 0 1 0 0 0 1 2 0 0 1 1 3 0 1 0 1 4 0 1 1 1 5 1 0 0 0 6 1 0 0 1 7 1 0 1 1 8 1 1 0 1 9 1 1 1 1 Pág. 2 BASE 8 CÓD. 4-2-1 N 4 2 1 N A B C 0 0 0 0 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base A seguir apresentamos o código BCD-Gray Código BCD – Gray A 0 0 0 0 0 1 1 1 1 1 B 0 1 1 1 1 1 1 1 1 0 C 1 1 1 0 0 0 0 1 1 1 D 0 0 1 1 0 0 1 1 0 0 Tabela ASCII O código ASCII (American Standard Code for Information Interchange) representa uma maneira de codificar caracteres na forma de valores inteiros. Neste código, os caracteres são mapeados para valores numéricos representáveis por sete dígitos binários (bits). Este código abrange 95 caracteres passíveis de impressão e 33 caracteres especiais utilizados, entre outros, no controle de comunicação entre computadores ou um computador e seus periféricos. A tabela abaixo descreve o padrão ASCII. Para obter o código interno, em decimal, você soma o valor no início da linha onde se encontra o caractere desejado com o valor no topo de sua coluna. Os 33 caracteres de controle são os de código 0 a 31 (NUL a US) e o de código 127 (DEL). 00 16 32 48 64 80 96 112 0 @ P ` p 0 NUL DLE 1 SOH DC1 ! 1 A Q a q 2 STX DC2 " 2 B R b r 3 ETX DC3 # 3 C S c s 4 EOT DC4 $ 4 D T d t 5 ENQ NAK % 5 E U e u 6 ACK SYN & 6 F V f v Pág. 3 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base 7 BEL ETB ' 7 G W g w 8 BS CAN ( 8 H X h x 9 HT ) 9 I Y i y EM 10 LF SUB * : J Z j z 11 VT ESC + ; K [ k { 12 FF FS , < L \ l | 13 CR GS - = M ] m } 14 SO RS . > N ^ n ~ 15 SI US / ? O _ o DEL O código da letra A, por exemplo, é 1 + 64 = 65. * EBCDIC (Extended Binary Coded Decimal Interchange): - usado em computadores de grande porte, desenvolvido pela IBM; - utiliza 8 bits podendo representar 256 caracteres (28 caracteres) ex: letra A: C1 bit1 bit2 bit3 1 1 0 bit4 0 bit5 0 bit6 0 bit7 0 bit8 1 ex: letra Z: E8 bit1 bit2 bit3 1 1 1 bit4 0 bit5 1 bit6 0 bit7 0 bit8 0 Bits 1234/5678 0000 (0) 0001 (1) 0010 (2) 0011 (3) 0100 (4) 0101 (5) 0110 (6) 0111 (7) 1000 (8) 1001 (9) 1010 (A) 1011 (B) 0000 (0) NUL SOH STX ETX PF HT LC DEL 0001 (1) DLE DC1 DC2 DC3 RES NL BS IL CAN RFL EM SMM CC VT 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 (2) (3) (4) (5) (6) (7) (8) (9) (A) (B) (C) (D) (E) (F) DS SP & { } \ 0 SOS a j ~ A J S 1 FS SYN b k s B K T 2 c l t C L U 3 BYP PN d m u D M V 4 LF RS e n v E N W 5 ETB UC f o w F O X 6 PRE EOT g p x G P Y 7 h q y H Q Z 8 i r z I R 9 SM ! : PAD . $ , # Pág. 4 1100 (C) 1101 (D) 1110 (E) 1111 (F) FF CR SO SI IFS DC4 IGS ENQ NAK IRS ACK IUS BEL SUB < ( + | * ) ; Prof. Luís Caldas Sistemas de Numeração e Transformação de Base % @ ‘ > = ? “ TRANSFORMAÇÃO DE UM NÚMERO DE UMA BASE QUALQUER PARA A BASE 10. A transformação de um número de uma determinada base para a base 10 é calculada da forma a seguir. N = an-1 Bn-1 + an-2Bn-2 + an-3Bn-3 +, .......... + a1B1 + a0B0 Por exemplo para o número 1001, na base 2 convertido para a base 10, fica : N = 1 x 23 + 0 x 22 + 0 x 21 + 1 x 20 = 9, assim (1001)2 = (9)10. Exemplo : Transformar o número na base (FFFF)16 para a base 10. N = 15 x 163 + 15 x 162 + 15 x 161 + 15 x 160 = 65536, assim (FFFF)16 = (65536)10. Exemplo : Transformar o número na base (AF3B)16 para a base 10. N = 10 x 163 + 15 x 162 + 3 x 161 + 11 x 160 = , assim (AF3B)16 = (44.859)10. Exemplo : Transformar o número na base (1234)16 para a base 10. N = 1 x 163 + 2 x 162 + 3 x 161 + 4 x 160 = , assim (1234)16 = (4.660)10. Exemplo : Transformar o número na base (3CDE)16 para a base 10. N = 3 x 163 + 12 x 162 + 13 x 161 + 14 x 160 = , assim (3CDE)16 = (15.582)10. Exemplo : Transformar o número na base (4567)16 para a base 10. N = 4 x 163 + 5 x 162 + 6 x 161 + 7 x 160 = , assim (4567)16 = (17.767)10. Exemplo : Transformar o número na base (4567)8 para a base 10. N = 4 x 83 + 5 x 82 + 6 x 81 + 7 x 80 = , assim (4567)16 = (455)10. Exemplo : Transformar o número na base (1234)8 para a base 10. N = 1 x 83 + 2 x 82 + 6 x 81 + 7 x 80 = , assim (1234)8 = (695)10. Exemplo : Transformar o número na base (751)8 para a base 10. N = 7 x 82 + 5 x 81 + 1 x 80 = , assim (751)8 = (489)10. Exemplo : Transformar o número na base (1101)2 para a base 10. N = 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20 = , assim (1101)2 = (13)10. Pág. 5 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base Exemplo : Transformar o número na base (1111)2 para a base 10. N = 1 x 23 + 1 x 22 + 1 x 21 + 1 x 20 = , assim (1111)2 = (15)10. Exemplo : Transformar o número na base (1000)2 para a base 10. N = 1 x 23 + 0 x 22 + 0 x 21 + 0 x 20 = , assim (1000)2 = (8)10. Exemplo : Transformar o número na base (0101)2 para a base 10. N = 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20 = , assim (0101)2 = (5)10. Exemplo : Transformar o número na base (0001)2 para a base 10. N = 0 x 23 + 0 x 22 + 0 x 21 + 1 x 20 = , assim (0001)2 = (1)10. Exemplo : Transformar o número na base (1100)2 para a base 10. N = 1 x 23 + 1 x 22 + 0 x 21 + 0 x 20 = , assim (1100)2 = (12)10. TRANSFORMAÇÃO DOS BÚMEROS DA BASE 10 PARA QUALQUER PARA UMA OUTRA BASE Para transformar um número na base 10 para uma outra base qualquer, o método é da divisão sucessiva do número. O exemplo a seguir de conversão por divisões sucessivas é apresentado e em seguida, o algorítmo mostra como chegar no número final convertido para a base desejada. Exemplo : Converter o número (451)10 para a base 4. 451 4 051 11 03 112 4 32 28 0 0 O número (451)10 convertido na base 4 será : (13003)4 4 7 3 4 1 1 4 0 Dígito MSB Pág. 6 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base N = n.o na base 10 m = Base desejada i=0 Q = INT (N / m) R(i) = N - m.Q N=Q i=i+1 ≠ Q=0 = Número = R(0),R(1),..R(j) Convertido Exemplo : Transformar o número (1130)10 para a base 2. Utilizando o método das divisões sucessivas, teremos : 1130 2 13 565 10 16 0 05 1 2 282 2 08 141 2 2 02 01 70 1 10 35 2 0 0 15 17 1 1 O número convertido é : (10001101010)2 2 8 0 Sentido de leitura 2 4 2 0 2 2 0 1 2 1 0 CODIFICAÇÃO DOS COEFICIENTES DOS NÚMEROS NAS BASES DE 2 A 16. Para operar com os números em computador, devemos codificar esses números em binário, pois é a linguagem que o computador entende. A seguir apresentamos os coeficientes dos números em diversas bases codificados em binário. a) Base 2 – Para os números na base 2, os coeficientes são 0 e 1. Para codificar em binário dois números, 0 e 1 é necessário um único bit (0,1). BASE 2 Codificação binária 0 0 1 1 Pág. 7 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base b) Base 3 – Para os números na base 3, os coeficientes sáo 0,1 e 2. Para codificar em binário 03 números, 0,1 e 2 são necessários 02 bits (0-00, 1-01, 2-10). BASE 3 Codificação binária 0 00 1 01 2 10 c) Base 4 – Para os números na base 4, os coeficientes sáo 0,1,2 e 3. Para codificar em binário 04 números, 0,1,2 e 3 são necessários 02 bits (0-00, 1-01, 2-10 e 3-10). BASE 4 Codificação binária 0 00 1 01 2 10 3 11 d) Base 5 – Para os números na base 5, os coeficientes sáo 0,1,2,3 e 4. Para codificar em binário 05 números, 0,1,2,3 e 4 são necessários 03 bits (0-000, 1-001, 2-010, 3-011 e 4-100). BASE 5 Codificação binária 0 000 1 001 2 010 3 011 4 100 e) Base 6 – Para os números na base 6, os coeficientes sáo 0,1,2,3,4 e 5. Para codificar em binário 6 números, 0,1,2,3,4 e 5 são necessários 03 bits (0-000, 1-001, 2-010, 3-011, 4-100 e 5-101). BASE 6 Codificação binária 0 000 1 001 2 010 3 011 4 100 5 101 f) Base 7 – Para os números na base 7, os coeficientes sáo 0,1,2,3,4,5 e 6. Para codificar em binário 07 números, 0,1,2,3,4,5 e 6 são necessários 03 bits (0-000, 1-001, 2-010, 3-011, 4-100, 5-101, 6-110). BASE 7 Codificação binária 0 000 1 001 2 010 3 011 4 100 5 101 6 110 g) Base 8 – Para os números na base 8, os coeficientes sáo 0,1,2,3,4,5,6 e 7. Para codificar em binário 08 números, 0,1,2,3,4,5,6 e 7 são necessários 03 bits (0-000, 1-001, 2-010, 3-011, 4-100, 5-101, 6-110 e 7-111). BASE 8 Codificação binária 0 000 1 2 3 4 5 6 7 001 010 011 100 101 110 111 h) Base 9 – Para os números na base 9, os coeficientes sáo 0,1,2,3,4,5,6,7, e 8. Para codificar em binário 03 números, 0,1,2,3,4,5,6,7 e 8 são necessários 04 bits (0-0000, 1-0001, 2-0010, 3-0011, 4-0100, 5-0101, 6-0110, 7-0111 e 8-1000). BASE 9 0 1 2 3 4 5 6 7 8 Codificação binária 0000 0001 0010 0011 0100 0101 0110 0111 1000 Pág. 8 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base i) Base 10 – Para os números na base 10, os coeficientes sáo 0,1,2,3,4,5,6,7,8, e 9. Para codificar em binário 10 números, 0,1,2,3,4,5,6,7,8 e 9 são necessários 04 bits (0-0000, 1-0001, 2-0010, 3-0011, 4-0100, 5-0101, 6-0110, 7-0111, 8-1000 e 9-1001). BASE 10 0 1 2 3 4 5 6 7 8 9 Codificação binária 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 j) Base 11 – Para os números na base 11, os coeficientes sáo 0,1,3,4,5,6,7,8,9 e A. Para codificar em binário 11 números, 0,1,2,3,4,5,6,7,8,9 e A são necessários 04 bits (0-0000, 1-0001, 2-0010, 3-0011, 4-0100, 5-0101, 6-0110, 7-0111, 8-1000, 9-1001 e A-1010). BASE 10 Codificação binária 0 0000 1 0001 2 3 0010 0011 4 0100 5 0101 6 7 0110 0111 8 1000 9 1001 A 1010 k) Base 12 – Para os números na base 12, os coeficientes sáo 0,1,2,3,4,5,6,7,8,9,10 e 11. Para codificar em binário 12 números, 0,1,2,3,4,5,6,7,8,9,A e B são necessários 04 bits (0-0000, 1-0001, 2-0010, 3-0011, 4-0100, 5-0101, 6-0110, 7-0111, 8-1000, 9-1001, A-1010, B-1011). BASE 12 Codificação binária BASE 12 Codificação binária 0 0000 6 0110 1 0001 7 0111 2 3 0010 0011 8 9 1000 1001 4 0100 A 1010 5 0101 B 1011 l) Base 13 – Para os números na base 13, os coeficientes sáo 0,1,2,3,4,5,6,7,8,9,A,B e C. Para codificar em binário 12 números, 0,1,2,3,4,5,6,7,8,9,A,B e C são necessários 04 bits (0-0000, 1-0001, 2-0010, 3-0011, 4-0100, 5-0101, 6-0110, 7-0111, 8-1000, 9-1001, A-1010, B-1011 e C-1100) BASE 13 Codificação binária BASE 13 Codificação binária 0 0000 6 0110 1 0001 7 0111 2 3 0010 0011 8 9 1000 1001 4 0100 A 1010 5 0101 B 1011 C 1100 m) Base 14 – Para os números na base 14, os coeficientes sáo 0,1,2,3,4,5,6,7,8,9,A,B,C e D. Para codificar em binário 14 números, 0,1,2,3,4,5,6,7,8,9,A,B,C e D são necessários 04 bits (0-0000, 1-0001, 2-0010, 3-0011, 4-0100, 5-0101, 6-0110, 7-0111, 8-1000, 9-1001, A-1010, B-1011, C-1100 e D-1101). BASE 14 Codificação binária BASE 14 Codificação binária 0 0000 7 0111 1 0001 8 1000 2 3 0010 0011 9 A 1001 1010 4 0100 B 1011 5 0101 C 1100 6 0110 D 1101 n) Base 15 – Para os números na base 15, os coeficientes são 0,1,2,3,4,5,6,7,8,9,A,B,C, D e E. Para codificar em binário 15 números, 0,1,2,3,4,5,6,7,8,9,A,B,C,D e E são necessários 04 bits (0-0000, 1-0001, 2-0010, 3-0011, 4-0100, 5-0101, 6-0110, 7-0111, 8-1000, 9-1001, A-1010, B-1011, C-1100, D-1101 e E-1110). BASE 15 Codificação binária BASE 15 Codificação binária 0 0000 7 0111 1 0001 8 1000 2 3 0010 0011 9 A 1001 1010 Pág. 9 4 0100 B 1011 5 0101 C 1100 6 0110 D E 1101 1110 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base o) Base 16 – Para os números na base 15, os coeficientes são 0,1,2,3,4,5,6,7,8,9,A,B,C, D e E. Para codificar em binário 15 números, 0,1,2,3,4,5,6,7,8,9,A,B,C,D e E são necessários 04 bits (0-0000, 1-0001, 2-0010, 3-0011, 4-0100, 5-0101, 6-0110, 7-0111, 8-1000, 9-1001, A-1010, B-1011, C-1100, D-1101, E-1110 e F-1111). BASE 16 Codificação binária BASE 16 Codificação binária 0 0000 8 1000 1 0001 9 1010 2 3 0010 0011 A B 1010 1011 4 0100 C 1100 5 0101 D 1101 6 7 0110 0111 E F 1110 1111 TRANSFORMAÇÃO ENTRE NÚMEROS DE BASES MÚLTIPLAS DE POTÊNCIA DE 2 A transformação entre números de bases múltiplas de potência de 2 é uma transformação direta sem a necessidade de divisão sucessivas para a conversão do número. Os coeficientes das bases convertidos no código binário, serão transformados para as bases múltiplas da potência de 2. 1) Conversão de um número na base (1000)2. A conversão da base 2 para a base 4 não necessita converter o número na base 2 para a base 10 e depois converter para a base 4. A conversão é direta, a base 4 são necessários 2 bits de representação, assim o número na base 2 deve ser dividido de 02 em 02 casas começando do lado direito para o esquerdo do número. 10 ! 00 2 0 Dividindo-se em 02 casas o dígito mais significativo o código é 10 que é igual a 2 e o dígito menos significativo o código é 00 que é igual a 0, assim o número convertido para a base 4 será (20)4. 2) Conversão de um número na base (100100)2. A conversão da base 2 para a base não necessita converter o número na base 2 para a base 10 e depois converter para base 8. A conversão é direta, a base 8 são necessários 3 bits de representação, assim número na base 2 deve ser dividido de 03 em 03 casas começando do lado direito para esquerdo do número. 8 a o o 100 ! 100 4 4 Dividindo-se em 03 casas o dígito mais significativo o código é 100 que é igual a 4 e o dígito menos significativo o código é 100 que é igual a 4, assim o número convertido para a base 8 será (44)8. 3) Conversão de um número na base (321)4. A conversão da base 4 para a base 8 não necessita converter o número na base 4 para a base 10 e depois converter para a base 8. A conversão é direta, a base 8 são necessários 3 bits de representação, assim o número na base 4 deve ser codificado e dividido de 03 em 03 casas começando do lado direito para o esquerdo do número. O número (321)4 codificado em binário é : 11 01 01 Pág.10 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base 110 ! 101 6 5 Dividindo-se em 03 casas o dígito mais significativo o código é 110 que é igual a 6 e o dígito menos significativo o código é 101 que é igual a 5, assim o número convertido para a base 4 será (65)8. 4) Conversão de um número na base (764)8. A conversão da base 8 para a base 16 não necessita converter o número na base 8 para a base 10 e depois converter para a base 16. A conversão é direta, a base 16 são necessários 4 bits de representação, assim o número na base 8 com 03 bits por dígito, deve ser codificado e dividido de 04 em 04 casas começando do lado direito para o esquerdo do número. O número (764)8 codificado em binário é : 111 110 100 1 ! 1111 ! 0100 1 F 4 Dividindo-se em 04 casas o dígito mais significativo o código é 1 que é igual a 1 e o dígito intermediário 1111 que é igual a F e o menos significativo com o código é 0100 que é igual a 4, assim o número convertido para a base 16 será (1F4)16. 5) Conversão de um número na base (764)16. A conversão da base 16 para a base 8 não necessita converter o número na base 16 para a base 10 e depois converter para a base 8. A conversão é direta, a base 8 são necessários 3 bits de representação, assim o número na base 16 com 04 bits por dígito, deve ser codificado e dividido de 03 em 03 casas começando do lado direito para o esquerdo do número. O número (764)16 codificado em binário é : 0111 0110 0100 011 ! 101 ! 100 ! 100 3 5 4 4 Dividindo-se em 03 casas o dígito mais significativo o código é 011 que é igual a 3 e o dígito intermediário 101 que é igual a 5 o próximo 100 que é igual a 4 e o menos significativo com o código é 100 que é igual a 4, assim o número convertido para a base 8 será (3544)8. 6) Conversão de um número na base (764)16. A conversão da base 16 para a base 2 não necessita converter o número na base 16 para a base 10 e depois converter para a base 2. A conversão é direta, a base 2 são necessários 1 bit de representação, assim o número na base 16 com 04 bits por dígito, deve ser codificado e não dividido em casas. O número (764)16 codificado em binário é : 0111 0110 0100 é o próprio na base 2. OUTRAS CONVERSÕES ÑÃO ENTRE BASES MÚLTIPLAS DE POTÊNCIA DE 2. 1) Conversão de um número na base 3 (2122)3 para base 7. A forma mais fácil de conversão é : Pág.11 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base a) Transformar o número da base 3 para a base 10 aplicando a expressão de transformação conhecida. b) Com o número em decimal dividir este por 7, até que o quociente seja igual a zero. c) Ler os coeficientes do número pelos restos das divisões sucessivas iniciando do último resto para o primeiro resto que será o número convertido na base 7. N = 2 x 33 + 2 x 32 + 2 x 31 + 2 x 30. N = (80)10 , o número 80 será convertido na base 7. 80 7 10 11 3 4 O número convertido é : (143)7 7 1 1 7 0 CODIFICAÇÃO DE NÚMEROS FRACIONÁRIOS DE UMA BASE QUALQUER Os números inteiros vimos como transformar e representar em uma determinada base, agora quando os números são fracionários como são representados. Para os números fracionários a representação em uma determinada base é idêntica à representada na base 10. Coloca-se uma virgula à direita do número inteiro e na parte fracionária colocamos os coeficientes do número. Por exemplo na base decimal o primeiro coeficiente ã direita da virgula, portanto a parte fracionária do número tem peso igual a 1/10 ou 0,1 e assim por diante o segundo 1/100, o terceiro 1/1000. Ou seja a notação para a parte fracionária ficará : N = ,1/B1 + 1/B2 + 1/B3 + 1/B4 ou representado por B-1 + B-2 + B-3 + B-4 +.........+ B-n . Exemplo : O número (21221,012)3, a parte inteira é 21221 e a parte fracionária do número é 012. Exemplo : O número (10110,011)2 , onde a parte inteira do número é 10110 e a parte fracionária do número é 011. Para converter o número na base 10 aplicamos para a parte inteira a expressão de transformação conhecida e da mesma forma para a parte fracionária, não esquecendo que na parte fracionária a base é elevada a potência negativa. Exemplo : Para o número (1001),10101)2 será convertido como : N = 1 x 23 + 0 x 22 + 0 x 21 + 1 x 20 + 1 x 2-1 + 0 x 2-2 + 1 x 2-3 + 0 x 2-4 + 1 x 2-5 N = 9,65625 Observar que a conversão do número fracionário para a base 10 será sempre uma aproximação sucessiva do número, pois um número pode ser representado uma dizima periódica, como ,101 101 101....101. Exemplo : Converter o número (321,221)4 para a base 10. N = 3 x 42 + 2 x 41 + 1 x 40 + 2 x 4-1 + 2 x 4-2 + 1 x 4-3 = 57,640625 Pág.12 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base Exemplo : Converter o número (753,642)8 para a base 10. N = 7 x 82 + 5 x 81 + 3 x 80 + 6 x 8-1 + 4 x 8-2 + 2 x 8-3 = 491,81640625 CONVERSÃO DE UM NÚMERO FRACIONÁRIO NA BASE 10 PARA UMA BASE QUALQUER A conversão de um número na base 10 para uma outra base é realizado para números inteiros como uma divisão pela base a ser convertida. No caso de números fracionários o processo deve ser o mesmo divisão sucessiva pela base, porém como a base é 1/B, a divisão por 1/B se torna uma multiplicação. O exemplo a seguir mostra uma conversão do número N = (6,75)10 para a base 2. A parte inteira do número N = 6, convertida para binário será : 110 A parte fracionária dp número N = ,75 será convertida como : 1) 2) 3) 4) 5) Multiplica-se a parte fracionária pela base que se quer converter. O resultado da multiplicação a esquerda da vírgula item 3 ou 4; Se for menor do que a base é 0 e Se for maior do que a base é 1 e Continuar a multiplicação com o número a dreita da vírgula só considerando a parte fracionária até que o resultado a direita da vírgula seja igual a 0 se não 6) Volte ao item 2. 0,75 x2 1 ,50 x2 Resultado Resultado 1 ,00 a esquerda a direita da da vírgula vírgula A primeira multiplicação gerou um bit (MSB) da parte fracionária o bit =1 e o resultado a direita = ,50. Continua a multiplicação, onde é gerado o segundo bit =1 e o resultado a direita igual a zero, oque encerra a conversão. Assim o número convertido será : (110,11)2. N = n.o na base 10 m = Base desejada i=0 Pág.13 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base Res = (N * m) direita Res(i) = bit a esquerda i=i+1 ≠ Res = 0 dir = Número Convertido = Res(1),Res(2)..... Res(n) Exemplo : Converter o número (1,2)10 para a base 3. A parte inteira é 1 convertida para a base 3, são necessários 2 bits para representação, assim = 01. Para a parte fracionária ,2 as multiplicações sucessivas convertem o número obedecendo ao procedimento. ,2 ,6 ,8 x3 x3 x3 ,6 1 ,8 2 ,4 ,4 x3 1,2 O número convertido N = 1,121121...121... uma dízima periódica. Exemplo : Converter o número (7,643)10 para a base 8. A parte inteira é 7 convertida para a base 8, são necessários 3 bits para representação, assim = 111. Para a parte fracionária ,643 as multiplicações sucessivas convertem o número obedecendo ao procedimento. ,7 ,6 ,8 ,4 ,3 x8 x8 x8 x8 x8 5 ,6 4 ,8 6 ,4 3,2 2 ,4 O número convertido N = 7,546323232...32... uma dízima. CONVERSÃO ENTRE BASES MÚLTIPLAS DE POTÊNCIA DE 2 PARA NÚMEROS FRACIONÁRIOS A conversão entre bases múltiplas de potência de 2 para os números fracionários, como na parte inteira, não necessita de multiplicação pois a conversão é direta. Pág.14 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base Exemplo : Converter o número na base 4 (2,321)4 para a base 2. Inicialmente codifique os coeficientes em binário como a seguir. Como na base 4 são 02 bits para cada dígito, a representação fica : 2 , 3 2 1→ base 4 1 0, 11 10 01 A conversão é direta, resultando o número na base 2 (10,111001)2. Exemplo : Converter o número na base 4 (2,321)4 para a base 8. 2, 3 2 1→ base 4 1 0, 11 10 01, para a base 8 são 03 bits necessários para a representação, assim o número codificado, fica : 2 7 1 → base 8 010,111 001 O número na base 8, será 2,71 REPRESENTAÇÃO DOS NÚMEROS Os números podem ser representados com ou sem sinal o qual chamamos de números assinalados e não assinalados. A forma de representar os números assinalados, podem ser : Representação em sinal e amplitude, complemento 2 e complemento 1, em ponto fixo ou ponto flutuante. a) Representação em Sinal e Amplitude. A representação em sinal amplitude utiliza o bit mais significativo para indicar o sinal e os bits restantes para indicar a amplitude do sinal. Para o bit de sinal se igual a “0” o número é positivo se igual a “1” o número é negativo. Para um dado número de bits iguais a n, sendo 1 bit reservado para o sinal e n-1 restante é para a amplitude do sinal, então a faixa de extensão de um número de n bits será : - 2n-1 ≤ N ≤ +2n-1 Exemplo : Para o número de 4 bits na representação sinal e amplitude será : N -7 -6 -5 -4 -3 -2 -1 -0 +0 +1 +2 +3 +4 +5 +6 +7 Pode-se varificar que (– 0) é um problema e a máquina deverá identificar e corrigir pois numa operação por exemplo de subtração entre 02 números assinalados o resultado pode dar (– 0) o que seria um erro. Esta representação não é utilizada em virtude deste problema pois descartando o (- 0) perde-se um número na faixa de operação com isso nesta representação a faixa de operação é menor que outras representações e a extensão é menor. Por exemplo (- 0) poderia ser o (- 8) e assim a extensão do número seria maior. b) Representação em complemento de 1 Pág.15 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base A representação em complemento 1 é utilizada pela facilidade de operar com números negativos nas operações de subtrações. Vemos que para os números positivos não há mudança em relação aos números em sinal amplitude. Na representação em complemento 1 de números negativos, os números são obtidos pela inversão de todos os bits, inclusive o sinal. A faixa de operação dos números em complemento 1 segue : - 2n ≤ N ≤ +2n-1 Para 4 bits Exemplo : Para o número de 4 bits na representação complemento 1 será : N -7 -6 -5 -4 -3 -2 -1 -0 +0 +1 +2 +3 +4 +5 +6 +7 Pode-se varificar que (– 0) é um problema e a máquina deverá identificar e corrigir pois numa operação por exemplo de subtração entre 02 números assinalados o resultado pode dar (– 0) o que seria um erro. Esta representação não é utilizada em virtude deste problema pois descartando o (- 0) perde-se um número na faixa de operação com isso nesta representação a faixa de operação é menor que outras representações e a extensão é menor. Por exemplo (- 0) poderia ser o (- 8) e assim a extensão do número seria maior. c) Representação em complemento de 2 A representação em complemento 2 é a mais utilizada pela facilidade de operar com números negativos nas operações de subtrações. Vemos que para os números positivos não há qualquer mudança com a representação em sinal amplitude. Os números negativos são obtidos na representação de complemento 2 fazendo o complemento 1 do número positivo, inclusive o sinal e somando-se 01 ao resultado. A faixa de extensão de um número de n bits será : - 2n-1 ≤ N ≤ +2n-1 Exemplo : Para o número de 4 bits na representação complemento 1 será : N -8 -7 -6 -5 -4 -3 -2 -1 +0 +1 +2 +3 +4 +5 +6 +7 Por exemplo : O número +(96)10 = +(01100000) este número negativo seria . Para se obter o complemento 2 do número : 1) Achar o complemento 1; 2) Somar 01 unidade ao número complementado. N = (10011111) + 01 = (10100000) = -(96)10 d) Representação de números fracionários negativos em complemento 2 O número é (01011,10)2 Complemento 2 = 10101,01 Pág.16 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base REPRESENTAÇÃO DE DADOS EM PONTO FLUTUANTE Os números reais representando os dados numéricos podem ser fracionários (tais como 14,212). Como é representar a parte fracionária do número, representada (após a vírgula que é a separação da parte inteira), de forma que permita no computador o seu armazenamento e também ocupe um pequeno volume de memória ?. NÚMEROS REAIS Os números reais são números que possuem parte inteira e fracionária (por exemplo, 14,212). O formato de representação desses números da parte inteira, vírgula (ou ponto) e da parte fracionária, é apresentado a seguir : Por exemplo : 123, 012, sendo 123 a parte inteira e 012 a parte fracionária do número. Nem toda a notação que serve para representar os números é adequada para um processamento no computador. É necessário uma representação dos números, de tal forma que os números possam ser expressos sem uma perda significativa de precisão e de intervalo numérico. REPRESENTAÇÃO EM PONTO FLUTUANTE Consideremos o número 14,212 do exemplo. Este número pode ser também expresso como 12,212 x 100 e também ser expresso como 14212 x 10-3 ou ainda 0,14212 x 102. Na realidade, qualquer número, inteiro ou fracionário, pode ser expresso neste formato número x base expoente, no qual se varia dois parâmetros : a posição da vírgula (que delimita a parte fracionária) e a potência à qual se eleva na base. Essa representação é denominada representação em ponto flutuante, pois o ponto varia sua posição, modificando, em conseqüência, o valor representado. REPRESENTAÇÃO NORMALIZADA Na representação normalizada, o número é construído movendo a vírgula para a direita ou para a esquerda de tal forma que o número seja menor do que 1, o mais próximo possível de 1, multiplicado pela potência da base de forma a manter o valor próprio do número. Em geral, isso significa que o primeiro dígito significativo seguirá imediatamente ao ponto (ou vírgula). Por exemplo : 14,21210 --> normalizando ==> 0,14212 x 102 0,000345610 --> normalizando ==> 0,3456 x 10-3 0,000011002 --> normalizando ==> 0,1100 x 2-4 De forma genérica, podemos representar a forma normalizada: ± número x base ±expoente A parte do número representado dessa forma normalizada (os algarismos significativos), damos o nome de mantissa.e portanto podemos representar: ± 0,M x B ± e onde M é a mantissa, B é a base e e é o expoente. Pág.17 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base REPRESENTAÇÃO DE NÚMEROS REAIS NO COMPUTADOR Uma forma comum de representação de números reais no computador pode ser expressa como segue: 01 BIT SINAL DO NÚMERO 01 BIT SINAL DO EXPOENTE X BITS Y BITS EXPOENTE DO NÚMERO MANTISSA Em virtude dos computadores operarem na base 2 pois os valores são “0 e 1”, não será necessário na representação dos números reais, especificar a base pois se subentende que a base é implícita. O número total M de bits para a representação, depende do tipo de computador, sendo distribuídos em : 01 bit para o sinal do número positivo ou negativo 01 bit para o sinal do expoente, y bits para a mantissa e x bits para o expoente. O número de bits do expoente, define a intervalo numérico que o computador pode representar, assim quanto maior o número de bits, maior será o intervalo de representação do número. Para a mantissa quanto maior o número de bits para a mantissa, maior será a precisão na representação do número. Uma vez que no processo de conversão de decimal para binário, a conversão é realizada na parte fracionária do número através de uma aproximação e assim quanto maior o número de bits mais próximo ao valor real do número. Porém, reduzindo-se a mantissa, perde-se em precisão pois estaremos truncando o número (o erro de truncamento é quando limitamos o número em um certo número de algarismo ou seja cortando os últimos algarismos significativos que não podem ser representados). Considerando-se a representação acima, na base implícita 2: maior expoente possível e = 2x – 1, para x bits, tem-se 0 ≤ e ≤ 2x -1 maior mantissa possível = 2y – 1, para y bits, tem-se 0 ≤ e ≤ 2y -1 a) Intervalo de representação dos números positivos Para N é representado de 0,100.000 x 2-e ≤ N ≤ + 0,111....111 x 2e Sendo : maior número real : +(0.111...1 x 2e) sendo e = 2x – 1 menor real positivo: +(0.100...0 x 2 -e sendo e = 2x – 1 b) Intervalo de representação dos números negativos Para N é representado de - 0,100.000 x 2-e ≤ N ≤ - 0,111....111 x 2e Sendo : maior real negativo: -(0.100...0 x 2 -e sendo e = 2x – 1 menor número real: -(0.111...1 x 2e) sendo e = 2x – 1 INTERVALO DE REPRESENTAÇÃO DOS NÚMEROS UNDERFLOW OVERFLOW Pág.18 0 OVERFLOW Prof. Luís Caldas Sistemas de Numeração e Transformação de Base -e - 0,11...111 x 2e - 0,10...000 x 2 + 0,10...000 x 2-e + 0,11...111 x 2+e Pode-se observar facilmente que a representação em ponto flutuante tem limites de intervalo numérico e de precisão em virtude do limitado número de bits do expoente. A precisão é determinada pelo número de bits da mantissa. Overflow ocorre quando o valor absoluto do dado a ser representado excede a capacidade de representação, porque o número de bits do expoente (neste caso, positivo) é insuficiente para representar o dado. Um outro problema ocorre na região de números próximos de zero, que tem o maior expoente negativo possível. Underflow ocorre quando o valor absoluto do dado a ser representado é tão pequeno que fica menor que o menor valor absoluto representável. Quando os números são muito próximos a zero sendo o expoente negativo, não há representação desses números e ocorre uma descontinuidade na representação. Observação : Não se deve confundir o arredondamento para a normalização do número a ser representado ocorrendo imprecisão com underflow o qual ocore quando os dados na faixa do underflow não podem ser representados em virtude do estouro do expoente. CARACTERÍSTICA Característica é o expoente, representado na forma de excesso de n, ou seja, CARACTERÍSTICA = EXPOENTE + EXCESSO A representação substituindo expoente por característica implica que todas as características serão positivas, de forma que é possível eliminar a representação do sinal do expoente. Se CARACTERÍSTICA = EXPOENTE + EXCESSO, sendo M o número de bits para a representação da característica, temos: 0 = - 2M-1 + EXCESSO ⇒ EXCESSO = + 2M-1 EXEMPLO DE REPRESENTAÇÃO EM PONTO FLUTUANTE Pág.19 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base a) Representação no IBM /370 b) A família IBM /370 representa os dados em ponto flutuante com base implícita = 16, no seguinte formato: sendo SN = sinal do dado CARACTERÍSTICA = o expoente, representado na forma de excesso de n, ou seja, CARACTERÍSTICA = EXPOENTE + EXCESSO No caso da IBM, o excesso é de 6410, portanto: CARACTERÍSTICA = EXPOENTE + 6410 Exemplificando: expoente = 810, logo característica = 810 + 6410 = 7210 Assim, uma característica entre 0 e 6310 significa que o expoente é negativo, enquanto uma característica entre 65 e 127 significa que o expoente é positivo (característica igual a 6410 significa expoente igual a 0).. Exemplo: Representar (25,5)10 Como a base implícita é 16, vamos converter para hexadecimal: 25 / 16 = 1, resto 9 logo: (25)10 = (19)16 Parte fracionária: 0.5 x 16 = 8,0 Logo: (25,5)10 = (19,8)16 x 160 Normalizando: (19,8)16 x 160 = (0,198)16 x 162. Em binário com 24 bits, a mantissa normalizada será: 0,19816 = 0001.1001.1000.0000.0000.0000 Obs.: Como o número 0,19816 será representado em 24 bits, os bits não representativos (à direita) serão preenchidos com zeros. Como o expoente é 2, a característica será: 210 + 6410 = 6610. Em binário com 7 bits, será: 100.0010 Portanto, a representação será: b) Representação no PDP 11 Os microcomputadores PDP 11 representam os dados em ponto flutuante com base implícita = 2, no seguinte formato: Pág.20 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base sendo SN = sinal do dado CARACTERÍSTICA = o expoente, representado na forma de excesso de n, ou seja, CARACTERÍSTICA = EXPOENTE + EXCESSO No caso do PDP 11, o excesso é de 12810, portanto: CARACTERÍSTICA = EXPOENTE + 12810 Exemplificando: expoente = - 28 logo característica = - 2810 + 12810 = 10010 Assim, uma característica entre 0 e 12710 significa que o expoente é negativo, enquanto uma característica entre 129 e 255 significa que o expoente é positivo (característica igual a 1280 significa expoente igual a 0). Exemplo: Representar 25,510 Como a base implícita é 2, vamos converter para binário: 2510 = 110012 Parte fracionária: 0.5 x 2 = 1,0 Logo: 25,510 = 11001,12 x 20 Normalizando: 11001,12 x 20 = 0,1100112 x 25. Obs.: Como a base implícita no PDP 11 é 2, o número normalizado começará SEMPRE por 0,1. Assim, como o primeiro dígito da mantissa será sempre 1, o PDP 11 economiza um bit na mantissa não armazenando o primeiro bit da mantissa, já que está implícito que todos os números terão mantissa iniciando com 1. O bit economizado dessa forma permite que, embora a mantissa no PDP seja representada com 23 bits e no IBM /370 com 24 bits, a precisão na representação é a mesma. Obs.1: Leia-se o SEMPRE da obs. acima como quase sempre. A única exceção corre por conta do zero, que nesse caso tem um tratamento especial. Em binário com 23 bits, a mantissa normalizada será (lembrando que o primeiro bit 1 não é representado): 0,1100112 = 100.1100.0000.0000.0000.0000 Obs.: Como o número 0,1100112 será representado em 23 bits, os bits não representativos (à direita) serão preenchidos com zeros. Como o expoente é 5, a característica será: 510 + 12810 = 13310. Em binário com 8 bits, será: 1000.0101 Portanto, a representação será: Exercício: Qual das representações de ponto flutuante nos dois computadores exemplificados acima tem o maior alcance? Resp.: O alcance de uma representação depende do valor da base implícita, elevado ao maior valor que a característica pode assumir. Pág.21 Prof. Luís Caldas Sistemas de Numeração e Transformação de Base O maior alcance será o que tiver o maior valor de Be ou seja, base elevada ao maior valor possível da característica. O IBM /370 tem 7 bits para característica (maior característica = 63) e base implícita 16, portanto 1663 = (24) 63 = 2252 O PDP tem 8 bits para característica (maior característica = 127) e base implícita 2, portanto 2127 Conclusão: A representação em ponto flutuante do IBM /370 tem maior alcance que a do PDP 11. Pág.22