Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas de Numeração e Aritmética Computacional 1 Arquitetura e Organização de Computadores (CCE0091) Universidade Estácio de Sá Graduação – Engenharia / TI Professor: Affonso C. Junior Unidade 2 - Sistemas de Numeração, Aritmética e Representação de Dados. Sistemas de Numeração e Aritmética Computacional 2 Sistemas de numeração Conversão de bases Aritmética computacional Tipos de dados Representação de caracteres Sistemas de Numeração e Aritmética Computacional 3 Sumário • Sistemas (bases) de numeração • Conversão entre bases • Aritmética computacional • Representação de dados numéricos – Inteiros x não-inteiros • Representação de caracteres Sistemas de Numeração e Aritmética Computacional 4 • Primeiramente, um pouco de curiosidade histórica: O Sistema Sexagesimal (chamado por alguns de “base 60”) Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) foi, muito provavelmente, o primeiro a ser criado, na antiga Mesopotâmia (sumérios, acádios, etc) Sistemas de Numeração e Aritmética Computacional 5 • Sistemas de numeração são formas de representação de valores. • Existem os sistemas não-posicionais e os posicionais. • Nos não-posicionais o símbolo não depende da posição. • Por exemplo, os numerais romanos: o símbolo X vale 10 em qualquer posição que estiver no número, seja IX ou LXV. Exemplo: LXXX XX IX • Já nos posicionais, o valor do símbolo muda com a posição. Por exemplo: o símbolo 6 dentro do número 625 significa o valor 600, mas no número 461 significa 60. • Diariamente trabalhamos com o sistema posicional decimal, assim chamado por ter dez símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 • Como tem dez símbolos, dizemos também que possui base 10. Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 6 • Como sabemos, o computador funciona em binário, ou seja, representações de número somente com os símbolos 0 e 1. • Este é um sistema de numeração com base 2 ou binário. • Na eletrônica ainda é comum trabalhar-se com o sistema octal, que possui base 8, cujos símbolos são: 0, 1, 2, 3, 4, 5, 6, 7 • Há também o sistema de numeração hexadecimal (de base 16), formado pelos símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F e muito usado para a exibição de endereços de memória. • São estes quatro sistemas de numeração que serão o fundamento do estudo da computação, sendo necessários para compreensão da organização de sua arquitetura. • Para compreendermos melhor a relação entre eles, devemos estudar a conversão de uma base para outra. Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 7 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 8 • Alguns exemplos de valores (compare as mesmas quantidades, expressas em diferentes sistemas): Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 9 • Quanto vale uma cadeia binária? (ou: convertendo de binário para decimal) Pense bem: como sabemos o valor do número abaixo (base 10)? E em binário (base = 2)? Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 10 Conversões: binário, octal, e hexadecimal p/ decimal • Segue-se a regra simples: • Ou seja, eleva-se a base a converter à potência cujo valor é sua posição no número e multiplica-se pelo símbolo. • Assim, de binário (base 2) para decimal (base 10), podemos fazer, por exemplo: • Ex1: • Ex2: Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 11 • Conversão de decimal para binário: Podemos ter, basicamente 3 casos: - número inteiro comum. Ex: 97 - número fracionário (< 1). Ex: 0,69 - número com parte inteira e parte fracionária. Divisões sucessivas do número pela base (no caso, 2), até quociente = 0. Pega-se os restos, na ordem inversa. Dica: faça a última divisão (1 por 2 = 0, resto 1) Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 12 • É possível converter parte fracionária também? – SIM Produtos sucessivos por dois. Ao invés dos restos, pega-se as partes inteiras (esquerda da vírgula), de cima para baixo. Paramos quando foi atingido o valor 1,00, ou quando as contas não convergem, mas já se tem uma precisão (nº de bits satisfatório). Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 13 Como fazer c/ um núm. c/ parte inteira e fracionária? Vejamos o exemplo (174,25)10: 174 / 2 = 87 resto 0 � (“método da escadinha”) 87 / 2 = 43 resto 1 43 / 2 = 21 resto 1 21 / 2 = 10 resto 1 10 / 2 = 5 resto 0 5 / 2 = 2 resto 1 2 / 2 = 1 resto 0 1 / 2 = 0 resto 1 Logo: parte inteira: 10101110 • 0,25 x 2 = 0,50 (inteiro 0) • 0,50 x 2 = 1,00 (inteiro 1) ==> parte fracionária: 01 Juntando ambos: (174,25)10 = (10101110,01)2 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 14 Binários também podem representar não inteiros. Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 15 “Micro revisão” de potências (se necessário, reveja em casa) Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 16 Conversão de decimal para binário, octal e hexadecimal • De decimal para octal: (749,97)10 = ??? (em octal) 749 / 8 = 93 resto 5 (apenas a parte inteira, inicialmente) 93 / 8 = 11 resto 5 11 / 8 = 1 resto 3 1 / 8 = 0 resto 1 (interessante fazer a última divisão.) • Como na conversão binária, pega-se os restos, de baixo para cima. Logo: 749(10) = 1355(8) (ou: 749 d = 1335 o ) • Parte fracionária: mesmo procedimento do binário 0,97 x 8 = 7,76 (parte inteira = 7) 0,76 x 8 = 6,08 (parte inteira = 6) 0,08 x 8 = 0,64 (parte inteira = 0) ==> parte fracionária: 760 Logo: (749,97)10 = (1355,760)8 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 17 � E a conversão de decimal para hexadecimal? Mesmas regras, outra base (16), contas mais chatas. Lembre-se: 0, 1, 2, ...., 9, A=10, B=11, C=12,..., F=15 • (155,742)10: = ??? (em hexa) 155 / 16 = 9 resto 11 ( 11 = B ) 9 / 16 = 0 resto 9 (interessante fazer a última divisão.) • Como na conversão binária, pega-se os restos, de baixo para cima. Logo: 155(10) = 9B(16) (ou: 749 d = 9B h ) • Parte fracionária: mesmo procedimento do binário 0,742 x 16 = 11,872 (parte inteira 11 (=B) ) 0,872 x 16 = 13,952 (parte inteira 13 (=D) ) 0,952 x 16 = 15,232 (parte inteira 15 (=F) ) ⇒ Logo: parte fracionária= BDF, e (155,742)10 = (9B,BDF)16 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 18 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Como pode ver, não é muito bom deixar seu professor estressado!! ☺ Sistemas de Numeração e Aritmética Computacional 19 De binário, octal, e hexadecimal para decimal • E de octal (base 8) para decimal:• Finalmente, de hexadecimal (base 16) para decimal: Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 20 Conversão de decimal para binário, octal e hexadecimal • Para converter números da base 10 para outras bases, segue- se a seguinte regra: • parte inteira: divide-se o número a ser convertido pela base desejada; toma-se o quociente resultante e divide-se novamente pela base até que o quociente seja zero; os restos das divisões formam a parte inteira do número convertido; o primeiro resto representa o último dígito da parte inteira do número; o último quociente representa o primeiro dígito da parte inteira; • parte fracionária: multiplica-se a parte fracionária do número a ser convertido pela base desejada; toma-se a parte fracionária do número resultante e repete-se a operação; a parte inteira dos produtos obtidos representam a parte fracionária do número procurado. Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 21 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Como podemos observar, há uma correlação simples entre cada dígito hexa e um nibble (grupo de 4 bits), e entre cada dígito octal e um grupo de 3 bits. Sistemas de Numeração e Aritmética Computacional 22 Conversão de binário para octal • Basta converter cada três símbolos binários em um octal, partindo-se da vírgula. Caso faltem símbolos para completar três, completa-se com zeros. • Exemplo: (010 101,110 1)2 = (25,64)8 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 23 Conversão de octal para binário • O oposto do método anterior: pega-se cada valor e converte-se pela tabela em três símbolos binários. • Exemplo: (356,71)8 = (11 101 110,111 001)2 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 24 Conversão de binário para hexadecimal • Semelhante a conversão de octal, apenas pegando cada quatro símbolos binários para um hexadecimal, convertidos a partir da tabela. • Exemplo: (1101 1010 0100,1010 11)2 = (DA4,AC)16 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 25 Conversão de hexadecimal para binário • Oposto do método anterior. • Exemplo: (CAFE,01)16 = (1100 1010 1111 1110,0000 0001)2 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 26 • Conversão de “hexa” (para os íntimos) para octal: Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 27 • Conversão de octal para hexadecimal: Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 28 Operações Lógicas bit-a-bit • As operações lógicas que já vimos (AND, OR, NOT, XOR, etc) também são definidas sobre cadeias de bits. • Aplica-se a operação a cada par de bits correspondentes. • Veja os exemplos2: A = 1100 1010 B = 0011 1100 C = 1111 0000 D = 0000 1111 NOT A = 0011 0101 (inverte cada bit) NOT B = 1100 0011 A and B A or B A xor B A or C B and D 1100 1010 1100 1010 1100 1010 1100 1010 0011 1100 0011 1100 0011 1100 0011 1100 1111 0000 0000 1111 ------------------------------------------------------------------------ 0000 1000 1111 1110 1111 0110 1111 1010 0000 1100 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 29 � Aritmética binária – Adição binária Tabuada binária Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 30 � Aritmética binária – Subtração binária Tabuada subtração Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) OBS: para nós, não será tão importante. É definida e estudada matematicamente, mas, como veremos, pode ser implementada através da adição em “complemento a 2”. Sistemas de Numeração e Aritmética Computacional 31 � Aritmética binária – Multiplicação binária Tabuada muito simples: 1.o fator x 1 = repete, x 0 = 0 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Exemplo: produto '1101010110' x '101101' (854 x 45). Sistemas de Numeração e Aritmética Computacional 32 � Aritmética binária – Deslocamentos (shift) Deslocamento (shift) à esquerda e à direita. Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Ex: 000101112 (23) << 1 (desl.1 bit esq) 001011102 (46) >> 1 (desl.1 bit dir) 000010112 (11) << 2 (desl.2 bit esq) 010111002 (92) Regra geral ���� deslocar uma cadeia binária de: - n bits à esquerda: resulta em seu valor x (2n) - n bits à direita: resulta em seu valor / (2n) (e o que “cai” é o resto!) Sistemas de Numeração e Aritmética Computacional 33 • Variáveis e tipos de dados: conceitos chave em programação • CPU existe para executar programas, que são conjuntos de instruções. Programas manipulam dados. • Instruções e dados devem estar carregados na MP. • Cada instrução ou dado ocupa 1 ou mais células de memória, e possui um endereço de memória. • Dados são guardados em estruturas de dados (as mais simples são chamadas de variáveis de memória). • Uma variável possui: um nome, um endereço (o da célula inicial), um tipo de dados, e um tamanho (em bytes). • Os tipos de dados disponíveis dependem do nível no qual estamos programando (linguagem de alto nível, assembly, ou linguagem de máquina), e da linguagem utilizada. • Toda linguagem de alto nível fornece um conjunto de tipos de dados (q, p/ as de 3ª geração, em geral não varia muito). • Dados: numéricos, inteiros e não-inteiros, e não-numéricos. Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 34 Exemplo: linguagem Pascal Program Exemplo; Uses CRT; Var a, b : integer; med : real; Begin write(“Digite 2 valores: ”); read( a, b ); med := (a+b)/2.0; writeln(“Media = ”, med ); readln; End. Ling. C: int, float, double, char Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Tipos de dados (básicos): INTEGER inteiro “com sinal” REAL ponto flutuante CHAR caractere (só 1) BOOLEAN lógico (True / False) Tipo Natureza Sinal Bytes Ex: boolean L x 1 true integer I S 2 0 7 -2 real R S 4 1.0, 3.5 char A N 1 ‘A’,‘a’ --- variações de integer -- word I N 2 shortint I S 1 byte I N 1 longint I S 4 Sistemas de Numeração e Aritmética Computacional 35 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 36 • Já sabemos, por exemplo, que 01112 = 7. • Como representar o valor –7 ? • Várias formas já foram testadas • Técnicas mais importantes: – Sinal-magnitude – Complemento-a-um (ou complemento) – Complemento-a-dois • Sinal magnitude: mais simples. – Um bit para representar o sinal (1=negativo, 0=não-negativo) Ex: 0 0000111 = 7 1 0000111 = - 7 35 = 0 0100011 -35 = 1 0100011 Faixa de valores (p/ 8 bits): -127 a +127 (8b -> 0..255) Vantagens: simplicidade; CPU pode verificar facilmente o sinal. Desvantagem: dupla representação para o 0 Representaçãoda Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 37 • OBS: repare que, a partir de agora, o tamanho da cadeia de bits é importante, e deve estar definido. • Complemento a um (ou complemento): – Conceitualmente: é o que falta para chegar ao valor máximo da cadeia de bits (p/ dado número de bits). – Ex: complemento de 0101 é o que falta para chegar a 1111. Subtrai-se 0101 de 1111 = 1010 – Pois 0101 + 1010 = 1111. – Para simplificar, basta inverter cada bit (0�1, 1�0) Ex: -17 = ? 17 = 0001 0001 � 1110 1110 Desvantagens: - dupla representação para o 0 (0000 e 1111); - soma de 2 negativos não é simples; Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 38 • OBS: repare que, a partir de agora, o tamanho da cadeia de bits é importante, e deve estar definido. • Complemento de dois: – Calcula-se o complemento de 1, e soma-se 1 à cadeia resultante. Ex: 35 = 0010 0011 e o -35 ? 35 = 0010 0011 -> 1101 1100 -> +1 -> 1101 1101 Faixa de valores (p/ 8 bits): -128 a +127 Fórmula geral: p/ n bits � m=n-1 � –2n .. 0 .. +(2n–1) Vantagens: CPU pode verificar facilmente o sinal; Representação única para o 0; Subtração pode ser feita como adição Exercício: mostre a conta para o caso: 35 - 17 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 39 Complemento de dois Soma ���� Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Regra: se houve “vai-1” na última soma à esquerda, mas as duas parcelas têm sinais inversos, não há overflow! (logo, este vai-1 pode ser desprezado). Sistemas de Numeração e Aritmética Computacional 40 Números em “ponto fixo” • Dados numéricos podem ser: inteiros e ñ-inteiros • Não-inteiros (decimais) podem ser representados por: ponto-fixo ou ponto-flutuante. • Ponto fixo: números de dígitos fixo para representar: parte inteira + parte fracionária • Cada dígito tem um peso de acordo c/ a posição relativa à vírgula decimal (notação posicional). • Exemplo: 2 bytes, 8 bits p/ cada parte 1,1101 � 00000001 (int) + 11010000 (frac) Os 2 bytes armazenados: 00000001 11010000 • Não há necessidade de representar a vírgula. • Cabe à instrução (e ao hardware) reconstruí-lo. Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 41 Números em “ponto flutuante” Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 42 Números em “ponto flutuante” Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 43 Representação de Caracteres • Em programação: 1 caracter x 1 cadeia (string) • Em Pascal: VAR letra : char; nome : string[40]; • Representado através de tabelas, ou “códigos”. • Principais exemplos: – BCD e EBCDIC: BCD: Binary Coded Decimal – representado pelo seu equivalente de 4 bits; EBCDIC: Extended BCD Interchange Code – igual ao BCD + 4 bits (campo zonado) que não são usados p/ dados numéricos. – ASCII: American Standard Code for Information Interchange – Princípio igual ao do EBCDIC Original: 7 bits = 128 símbolos (sem ç, á, õ,...) ASCII estendido (Latin-1): 8 bits = 256 símbolos – Unicode: consórcio, 16 bits/caracter � 64K caracteres. Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 44 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) ASCII (versão de 8 bits) Sistemas de Numeração e Aritmética Computacional 45 Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados) Sistemas de Numeração e Aritmética Computacional 46 Representação de Caracteres • UTF-8: técnica mista – ASCII + Unicode. • Tudo em Unicode � 2 bytes por caractere � dobro do espaço de um texto ASCII � desperdício. • Um texto guardado em UTF-8 é quase todo em ASCII e, quando precisamos de um caractere ‘especial’ do Unicode, usamos um caractere especial, que indica "atenção, o seguinte caractere é em Unicode". Representação da Informação (bases numéricas, conversão, aritmética, tipos de dados)
Compartilhar