Lógica Combinacional Aula 01 – Sistema de Numeração Felipe S. L. G. Duarte [email protected] Sistema de Numeração • Um numeral é um símbolo ou grupo de símbolos que representa um número em um determinado instante da evolução do homem. Os símbolos “11” e “XI” são numerais diferentes, representaRvos do mesmo número. • Um sistema de numeração, (ou sistema numeral) é um sistema em que um conjunto de números são representados por numerais de uma forma consistente. Pode ser visto como o contexto que permite ao numeral "11" ser interpretado como o numeral romano para dois, o numeral binário para três ou o numeral decimal para onze. 2 Sistema de Numeração Em condições ideais, um sistema de numeração deve: 1. Representar uma grande quanRdade de números úteis (ex.: todos os números inteiros, ou todos os números reais); 2. Dar a cada número representado uma única descrição (ou pelo menos uma representação padrão); 3. RefleRr as estruturas algébricas e aritméRcas dos números. 3 Sistema de Numeração Em condições ideais, um sistema de numeração deve: 1. Representar uma grande quanRdade de números úteis (ex.: todos os números inteiros, ou todos os números reais); 2. Dar a cada número representado uma única descrição (ou pelo menos uma representação padrão); 3. RefleRr as estruturas algébricas e aritméRcas dos números. 4 Sistema Binário !!! MAIS IMPORTANTE !!! No sistema binário de numeração, existem apenas 2 algarismos: • algarismo 0 (zero) • algarismo 1 (um) Dec Bin 0 0 1 1 2 10 3 11 4 100 5 101 6 110 7 111 • • • • • • • • 1 digito -‐> 1 bit (binary digit) 4 bits -‐> 1 nibble 8 bits -‐> 1 byte 1024 bytes -‐> 1 Kbytes 1024 kb -‐> 1 Mbytes 1024 Mb -‐> 1 Gbytes 1024 Gb -‐> 1 Tbytes 1024 Tb -‐> … 5 Conversão Decimal -‐> Binário #include<stdio.h> #include<stdlib.h> void decToBin(int dec){ if((dec/2) == 0) { printf("%d",dec); return; } decToBin(dec/2); printf("%d", dec%2); } int main(int argc, char *argv[]){ int dec; printf("Forneça o num. decimal: "); scanf("%d",&dec); printf("Binario: "); decToBin(dec); printf("\n"); return 0; } 6 Conversão Binário -‐> Decimal 7 Sistema Octal O Sistema octal de numeração é um sistema de base 8 no qual existem 8 algarismos assim enumerados: Dec Oct Dec Oct 0 0 10 12 1 1 11 13 2 2 12 14 3 3 13 15 4 4 14 16 5 5 15 17 6 6 16 20 7 7 17 21 8 10 18 22 9 11 19 23 8 Conversão Decimal -‐> Octal 9 Conversão Octal -‐> Decimal 10 Sistema Hexadecimal O Sistema hexadecimal possui 16 algarismos, sendo sua base igual a 16. Os algarismos são assim enumerados: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Dec Hex Dec hex 0 0 10 A 1 1 11 B 2 2 12 C 3 3 13 D 4 4 14 E 5 5 15 F 6 6 16 10 7 7 17 11 8 8 18 12 9 9 19 13 11 Conversão Decimal -‐> hexadecimal 12 Conversão Hexadecimal -‐> Decimal 13 Conversões binário -‐> Octal 14 Conversões binário -‐> Hexadecimal 15 Conversão entre sistemas numéricos MulRplicação e Soma Decimal Divisões Sucessivas Hexadecimal Divisões Sucessivas MulRplicação e Soma Divisões Sucessivas Octal Divisões Sucessivas Divisões Sucessivas Agrupamento 4 bits por algarismo MulRplicação e Soma Binário Agrupamento 3 bits por algarismo 16 Resumindo…. 17 Adição no sistema Binário ??? LEMBRA DA API ??? Para efetuarmos adição no sistema binário, devemos agir como numa adição convencional no sistema decimal, lembrando que, no sistema binário, temos apenas 2 algarismos. Temos então: Convém observar que no sistema decimail 1+1=2 e no sistema binário representamos o número 2 por 10. Pela operação realizada notamos a regra de transporte para a próxima coluna: 1+1=0 e transporta 1 “vai um”. A operação de transporte também é denominada carry, termo derivado do inglês. 18 Subtração no sistema Binário ??? LEMBRA DA API ??? O Método de resolução é análogo a uma subtração no sistema decimal. Temos então: Observamos que para o caso 0-‐1, o resultado será igual a 1, porém haverá um transporte para a coluna seguinte que deve ser acumulado no subtraendo e, obviamente, subtraído do minuendo. 19 Números Binários NegaRvos ??? LEMBRA DA API ??? A representação de números binários posiRvos e negaRvos pode ser feita uRlizando-‐se os sinais + e – respecRvamente (como no sistema decimal). Na práRca, porém, em hardware dos sistemas digitais que processam operações aritméRcas, microcomputadores por exemplo, estes sinais não podem ser uRlizados, pois tudo deve ser codificado em 0 ou 1. Uma forma de representar em alguns casos uRlizada, é a de acrescentar ao número um bit de sinal colocado à esquerda, na posição de algarismo mais significaRvo. Se o número for posiRvo, o bit de sinal será 0, se o número for negaRvo este será 1. Este processo de representação é denominado Sinal-‐módulo. +100011 = 0100011 -‐1001001 = 11001001 20 Números Binários NegaRvos ??? LEMBRA DA API ??? Uma outra forma para representar número binários negaRvos bastante uRlizada nos sistemas já citados é a notação do complemento de 2, mas para obtê-‐la, devemos primeiramente converter o número na notação do complemento de 1, conforme se segue. A obtenção do complemento de 1 de um número binário se dá pela troca de cada bit do número pelo seu inverso ou complemento. Para demonstrar esse procedimento, vamos obter o complemento de 1 do número 10011011. Assim sendo, temos: Número Binário: 1 0 0 1 1 0 1 1 | | | | | | | | Complemento de 1: 0 1 1 0 0 1 0 0 21 Números Binários NegaRvos ??? LEMBRA DA API ??? A notação do complemento de 2, como já dissemos, é uRlizada para representar números binários negaRvos. Sua obtenção se dá somando-‐se 1 ao complemento de 1 do número binário inicial. Para exemplificar, vamos representar o número -‐11001101 na notação do complemento de 2: Número Binário: 1 1 0 0 1 1 0 1 | | | | | | | | 0 0 1 1 0 0 1 0 Complemento de 1: + 1 -----------------0 0 1 1 0 0 1 1 Complemento de 2: 22 Números Binários NegaRvos ??? LEMBRA DA API ??? Convém observar que estas representações, por serem uRlizadas no hardware de sistemas, possuem sempre um número predefinido de bits, não devendo ser desconsiderado nenhum deles na resposta. No exemplos já vistos, uRlizadmos números com 8 bits. Nota-‐se que os números posiRvos na notação do complemento de 2 recebem representação normal, idênRca à do sistema binário. Nos sistemas digitais, para se efetuar uma diferenciação, uRliza-‐se da mesma forma, um bit de sinal a mais que colocado à esquerda do número, indica se este é posiRvo (bit sinal = 0) ou se este é negaRvo (bit sinal = 1), estando na notação do complemento de 2. Um outro ponto, de grande importância, a ser abordado é a conversão inversa, i.e., a passagem do número na notação do complemento de 2 para a notação binária normal. O processo é simples, bastando determinarmos novamente o complemento de 2 do resultado. 23 Complemento de 2 em Operações AritméRcas ??? LEMBRA DA API ??? Podemos uRlizar a notação do complemento de 2 para efetuar operações diversas que envolvam soma ou subtração. De maneira geral, podemos condiderá-‐las como operações de soma envolvendo números posiRvos e negaRvos, ou ainda entre números quaisquer, obtendo uma resposta apropriada conforme a situação. Para solucionar qualque operação destas, basta determinar o complemento de 2 do número negaRvo envolvido, com o mesmo número de bits do outro membro da operação e realizar a soma, desconsiderando, se houver, o estouro do número de bits no resultado. A xtulo de exemplo, vamos efetuar a operação 11010111 – 100101. Notamos que esta operação equivale à soma de um número binário posiRvo com outro negaRvo: N1 + (-‐N2). Como vimos, a solução se dá determinando o complemento de 2 do segundo (negaRvo) com mesmo número de bits do primeiro, efetuando a soma e eliminando o bit em execesso. 24