UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 1 – Conceitos necessários Prof. Leonardo Augusto Casillo Sistema de numeração: conjunto de regras que nos permite escrever e ler qualquer número, utilizando para isto símbolos básicos. Os símbolos que utilizamos (os algarismos de 0 a 9) são apenas convenções para serem utilizadas em sistemas numéricos, sendo que podem ser utilizados letras, símbolos geométricos ou qualquer outra simbologia. Base de um sistema: quantidade de símbolos necessários para representar números em um sistema de numeração. ◦ Maior símbolo (algarismo) da base = base - 1 Notação Posicional: Dado um número, seu valor é calculado de acordo com a base do sistema e a posição que cada algarismo ocupa com sua potência correspondente. 2 Um número no sistema de base decimal pode ser decomposto em uma soma de potências de base 10. E assim para cada sistema de numeração, com sua base correspondente. Ex.: 1998 / 9198 ◦ A posição dos algarismos determina a diferença de valor. Processo de Soma de Potências (de 10) x1000 x100 x10 x1 1000+900+90+8 1 9 9 8 1998 x103 x102 x101 X100 9000+100+90+8 9 1 9 8 9198 3 Generalizando, um número N é expresso da seguinte forma: N = dn-1 x bn-1 + dn-2 x bn-2 + ... + d1 x b1 + d0 x b0 Em que: ◦ ◦ ◦ ◦ d -> cada algarismo do número n – 1, n – 2, etc -> indicam a posição de cada número b -> base de numeração n -> número de dígitos Matematicamente: n 1 N di Bi i 0 4 Importante: Qualquer sistema de numeração, ao ser descrito na equação de numeração posicional, resultará no valor correspondente ao sistema decimal (ou seja, é uma equação de conversão de qualquer base para a base 10). Ex: 4125 N N N N = = = = 4 x 52 + 1 x 51 + 2 x 50 4 x 25 + 1 x 5 + 2 x 1 100 + 5 + 2 10710 5 Decimal Binário Octal Hexadecimal 0 0 0 0 1 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 9 9 A B C D E F 6 ◦ Palavras binárias Designação Quantidade Nibble 4 bits Byte 8 bits Word 2 bytes Doubleword 4 bytes Quadword 8 bytes Paragraph 16 bytes 7 ◦ Grandezas binárias Grandeza Número de bytes Kilobyte 210 ou 1024 bytes Megabyte 220, 1024 KB ou 1048576 bytes Gigabyte 230, 1024 MB ou 1073741824 bytes Terabyte 240, 1024 GB, ou 1099511627776 bytes Petabyte 250, 1024 TB, ou 1125899906842624 bytes Exabyte 260 ou 1152921504606846976 bytes Zettabyte 270 ou 1180591620717411303424 bytes Yottabyte 280 ou 1208925819614629174706176 bytes 8 Para converter um número de base 2 para outro de base 2n, basta dividir o número binário, da direita para a esquerda, em grupos de n bits e encontrar o símbolo equivalente. O inverso é realizado substituindo o símbolo pelo grupo de n bits correspondentes. Exemplos: ◦ ◦ ◦ ◦ 1110101112 = 111-010-111 = 7278 1110101112 = 0001-1101-0111X = 1(13)7 = 1D716 2378 = 010, 011, 111 = 10011111X2 F5A16 = 1111, 0101, 1010 = 1111010110102 = 393010 9 A conversão de números em Sistema Decimal para o Sistema Binário pode ser feita através do mecanismo de divisões sucessivas ou levando-se em conta as potências referentes a cada posição, e relacionando-as com 1’s e 0’s conforme o número a ser representado. A conversão de números em Sistema Decimal para qualquer outra base pode ser feita através do mecanismo de divisões sucessivas pela base ou então convertendo-os para binário e depois encontrar o equivalente (se a base desejada for 2n). 10 Exemplo: Converter 1010 para binário usando divisões sucessivas (por dois): 10 2 0 5 1 2 2 0 2 1 2 1 0 Resultado obtido: 10102 Processo: divide-se por 2 com quociente inteiro, sucessivamente até que o quociente seja igual a 0. Os restos da divisão, de trás para frente, formam o número binário. 11 Exemplo: Converter 1010 para binário usando Processo: notação posicional: ◦ Etapa 1: Verificar a potência n que ultrapassa o número. 10 < 16 (24) n = 4 ◦ Etapa 2: Utilizar notação posicional de n-1 até 0. bit x 23 bit x 22 bit x 21 bit x 20 bit x 8 Bit x 4 Bit x 2 Bit x 1 12 ◦ Etapa 3: Subtrair o valor de cada potência (da mais significativa para a menos significativa). ◦ Caso a subtração seja possível, inserir o valor “1” na posição correspondente, caso contrário “0”. O valor resultante de cada subtração (quando ocorrer) é utilizado na próxima subtração. 10 – 8 = 2 (ok – valor 1) 2 – 4 = -2 (X – valor 0) 2 – 2 = 0 (ok – valor 1) 0 – 1 = -1 (X – valor 0) 1 0 1 0 ◦ Resultado obtido: 10102 13 A adição com números binários é feita da mesma forma que fazemos com qualquer sistema de numeração, levando-se em conta que o sistema binário é formado por apenas 2 símbolos (0 e 1). As combinações possíveis destes símbolos para a execução da adição são: 0+0=0 0+1=1 1+0=1 1 + 1 = 10, neste caso, durante a adição será usado o bit 0 e ocorrerá um “vai um” para o bit à esquerda, o que pode gerar overflow. 14 A adição com números binários também é feita da mesma forma que fazemos com qualquer sistema de numeração. As combinações possíveis destes símbolos para a execução da subtração são: 0-0=0 0 - 1 = 1 , neste caso, durante a subtração será usado o bit 1 e ocorrerá um “empréstimo” do valor da base do bit 1 mais à esquerda (2 – 1 = 1). 1-0=1 1 - 1 = 0. 15 Utilizam-se as mesmas regras da multiplicação decimal, mas é facilitado devido a ter somente 2 números possíveis. As combinações possíveis destes símbolos para a execução da subtração são ou 0 ou o próprio número: 0x0=0 0x1=0 1x0=0 1x1=1 16 Verificam-se quantas vezes o divisor cabe no dividendo por tentativa; Subtrai-se do dividendo o valor resultante da multiplicação do quociente pelo divisor, encontrando-se um valor que é o resto da divisão; O resto da divisão deve ser um valor igual, no máximo, ao divisor menos 1. 17 Exemplo: ◦ Dividir 1001 por 101 1001 – 101 = resto 0100 e quociente 1 Em decimal: 9 / 5 = 1 com resto 4 ◦ Dividir 101010 por 110 (1010)10 – 110 = resto 100 e quociente 1 1001 – 110 = resto 011 e quociente 1 110 = 110 = resto 0 e quociente 1 18 (Geralmente) apenas para adição e subtração, devido ao uso para endereçamento de memória; Mesmas regras da aritmética binária (lembrar do empréstimo da subtração – valor da base) 19 Forma polinomial multiplicativa (para base 10): ◦ ◦ ◦ ◦ Multiplica dígito mais significativo por B; Somar ao resultado o algarismo seguinte; Multiplicar esse novo resultado por B; Repetir até atingir o último algarismo. ◦ Exemplo: Converter 1011110 para base 10 1x2+0=2 2x2+1=5 5 x 2 + 1 = 11 11 x 2 + 1 = 23 23 x 2 + 1 = 47 47 x 2 + 0 = 94 20 Conversão através do Código BCD (Binary Coded Decimal – Decimal codificado em binário). ◦ Cada algarismo dígitos ◦ 0 = 0000 5 ◦ 1 = 0001 6 ◦ 2 = 0010 7 ◦ 3 = 0011 8 ◦ 4 = 0100 9 possui código binário fixo com 4 = = = = = 0101 0110 0111 1000 1001 ◦ 10 = 0001 0000 ◦ 95 = 1001 0101 ◦ 128 = 0001 0010 1000 21 Uso: apresentação de um resultado contido em um registrador em algum tipo de mostrador (ex: display) O formato BCD utiliza o sistema hexadecimal (?!?) Como são permitidos apenas os dígitos 0 a 9, é possível ler os dígitos em Hexa como Decimais. Não é conversão, é representação !!! Exemplo: o valor 15 pode ser representado como 15H ◦ 1 -> 0001, ◦ 5 -> 0101, ◦ 15 = 0001 0101 (BCD) = 1 5 H !! Lembrando que: 15D = 1111B = FH 22 Aritmética em BCD (Soma e Subtração) (0) (F) 1111 0000 (1) 0001 0010 (2) (E) 1110 (D) 1101 (C) 1100 0011 (3) “Pular” 6 posições (letras) 0100 (4) 0101 (5) (B) 1011 0110 (6) (A) 1010 1001 (9) 1000 (8) 0111 (7) 23 Soma: ◦ Somar os dígitos em Hexa (ou binário); ◦ Se a soma for superior a 9, adicionar 6 e considerar o vai-1 para a soma seguinte. ◦ Ex: somar 56 + 28 em BCD 6 + 8 = 14D (EH) 14 + 6 = 20 (14H) “vai-1” 5 + 2 + 1 = 8D (8H) 56 + 28 = 84 (BCD) !!Lembrar que 84D = 54H Subtração: ◦ Análogo a adição (subtrair 6 do resultado) ◦ Ao invés de vai-1, tem-se “vem-1” (ou empresta-1) Ex: 45 – 37 45H – 37H = 0EH E – 6 = 08H 16 45 37 ---E (14) Subtração ◦ Problema: utilizar subtração (não pode usar C2) ◦ Solução: algoritmo do complemento de 10 a – b = a + (10n – b) sem registro de vai-1 ◦ Ex: 45 – 37 Complemento de 10 de 37 =63 Somar 45 e 63 (em hexa) = A8H Corrigir o resultado da soma BCD = 108H Descartar a centena = 08H Representação em ponto fixo ◦ Sinal e magnitude (Módulo e Sinal) ◦ Complemento de 1 ◦ Complemento de 2 Representação em ponto flutuante ◦ IBM ◦ IEEE 754 27 Representação em ponto fixo ◦ MIPS - Millions of Instructions Per Seconds (Milhões de Instruções Por Segundo) Representação em ponto flutuante ◦ FLOPS - FLOating point instructions Per Seconds (Instruções com Ponto Flutuante Por Segundo). 28 Representação Circular ◦ n= 4 bits: 24 = 16 (0 a 15); 1111 + 1 = 0000 1111 - 0000 0001 0010 1110 0011 1101 0100 1100 0101 1011 0001 = - 15??? + 0110 1010 1001 1000 0111 29 Fronteira positivos e negativos(bit de sinal) ◦ n = 4 bits: -8 a +7 (-1) 1111 (0) 0000 (1) 0001 0010 (2) (-2) 1110 0011 (3) (-3) 1101 negativos -1 a -2n-1 0100 (4) (-4) 1100 positivos 0 a 2n-1 - 1 0101 (5) (-5) 1011 0110 (6) (-6) 1010 1001 (-7) 1000 0111 (7) (-8) 30 Complemento de 1 (não suficiente) ◦ Inverte-se 0’s e 1’s (-1) 1111 (0) 0000 (1) 0001 0010 (2) (-2) 1110 0011 (3) (-3) 1101 0100 (4) (-4) 1100 0101 (5) (-5) 1011 0110 (6) (-6) 1010 1001 (-7) 1000 0111 (7) (-8) 31 Complemento de 2 (simétrico: a ⇔ -a) ◦ -a = complemento de 1 de a + 1 (ou 2n- a) (-1) 1111 (0) 0000 (1) 0001 0010 (2) (-2) 1110 0011 (3) (-3) 1101 0100 (4) (-4) 1100 0101 (5) (-5) 1011 0110 (6) (-6) 1010 1001 (-7) 1000 0111 (7) (-8) ??? 32 Subtração usando adição (a + complemento de 2 de b) ◦ a – b = a + (2n – b) Ex: 6 – 4 = (-2) 0110 (6) + C2 de 0100 (4) (-3) 1101 = 0110 + 1100 = (-4) 1100 (1)0010 1 volta (-1) 1111 (0) 0000 (1) 0001 0010 (2) 1110 0011 (3) 2n – b = Volta completa no círculo – b posições 0100 (4) 0101 (5) (-5) 1011 0110 (6) (-6) 1010 1001 (-7) 1000 0111 (7) (-8) ??? 33 Tabela mais utilizada: ASCII ◦ Ninguém é louco de decorar a tabela! ◦ Mas é importante saber que: Letras maiúsculas começam em 41H Letras minúsculas começam em 61H Dígitos de 0 a 9 são 30H a 39H Esc = 27H (if ch != 27 { ... ) ◦ Outras tabelas: EBCDIC, UNICODE Uso de operações lógicas (instruções AND, OR e XOR); Permite alterar o valor de bits individuais dentro de um byte; Um dos operandos é denominado máscara. Aplicações: Objetivo Máscara Operação Setar um ou mais bits 1 p/ setar, 0 nos demais OR Zerar um ou mais bits 0 p/ zerar, 1 nos demais AND Complementar um ou mais bits 1 p/ complementar XOR Testar se um ou mais bits estão setados 1 para testar, 0 nos demais AND Exemplos: byte 1101 0100 ◦ Setar bit 3: 1101 0100 OR 0000 1000 = 1101 1100 ◦ Zerar bits 7 e 2: 1101 0100 AND 0111 1011 = 0101 0000 ◦ Complementar bits 4 e 5: 1101 0100 XOR 0011 0000 = 1110 0100 ◦ Testar se os bits 0 e 7 estão setados: 1101 0100 AND 1000 0001 = 1000 0000 Valor final será 0 se não estiver setado e diferente de zero se estiver setado. Após este valor, utilizar instruções de desvio condicional. É feita pelo processador e pelo programa, dependendo de como o valor é lido. Ex: posição de memória contendo o valor 47H ◦ Pode representar uma instrução (ex: MOV B, A) ◦ Pode representar um número inteiro (71D) ◦ Pode representar um caractere (G em ASCII) Histórico sobre computadores Tipos de memórias RAM e ROM ◦ DRAM X SRAM ◦ SDRAM ◦ ROM, PROM, EPROM, EEPROM, FLASH Site recomendado: www.howstuffworks.com.br (tópico: como as memórias funcionam) 38