Prof V Vargas, IST Sistemas de Numeração 26/11/13, Pg 1/12 Prof V Vargas, IST Sistemas de Numeração Sistemas de Numeração 26/11/13, Pg 2/12 / 5º Projecto A generalidade dos livros e cursos universitários versando Sistemas Lógicos/Digitais prefere começar por abordar “Sistemas de Numeração”, só depois rodando a atenção para a Álgebra de Boole, Gates, etc… O itinerário até agora percorrido é de certo modo inverso: primeiro, introduziram-se os chips SN74xx, como meio de resolver problemas de engenharia; e só depois, a pretexto da optimização dos circuitos assim concebidos, se abordou a álgebra de Boole – sem uma palavra sequer acerca de “Sistemas de Numeração”: foram de todo irrelevantes... Esta opção tem uma justificação: proporcionar aos estudantes, para quem este documento foi elaborado, o seu envolvimento activo – isto é, o meter a mão na massa (leia-se: no laboratório) – tão cedo quanto possível, por conseguinte sem o compasso de espera em que se traduziria estudar em primeiro lugar “Sistemas de Numeração”. Como o próprio leitor irá constatar daqui por diante, não convém todavia protelar por mais tempo a sua abordagem; é o que se fará nesta sessão – começando, como todas as outras Sessões, por enunciar um Projecto concreto... Considere que os candidatos a uma Universidade têm exame de aptidão a quatro disciplinas: Matemática, Português, História e Arte. Um candidato é aceite se for aprovado em Matemática e ao menos noutra disciplina, ou for aprovado em pelo menos três disciplinas. Esse Projecto envolve 4 variáveis: a ideia é ir progredindo do mais simples para o mais complicado… Mas a estratégia de resolução mantém-se: começar por elaborar a Tabela de Verdade… Ela encontra-se ao lado: – à esquerda, dispõem-se quatro colunas, representando as quatro disciplinas {M, P, H, A}; conforme à praxis recomendada, as colunas dispõem-se de modo a que a de maior peso, ‘M’, fique à esquerda… – ‘R’, a Resposta do Circuito, volve-se ‘1’ (i.e., o candidato é aceite) apenas em cada uma das oito linhas em que M=1 e há ao menos outro ‘1’, ou ocorrem três ou mais ‘1’s… Exprimindo a saída como um somatório () de mintermos, vem R = m (7, 9, 10, 11, 12, 13, 14, 15); e exprimindo-a como um produtório () de maxtermos, vem ‘’R = M (0, 1, 2, 3, 4, 5, 6, 8). (Abra-se um parêntesis: não se deverá deixar de reparar que os índices presentes no ‘’ são distintos daqueles listados no ‘’. Isso não acontece por acaso, é claro: no ‘’, referem-se as linhas onde R=1, e, no ‘’, referem-se as linhas onde R=0…) A questão que é mister aprofundar agora é a seguinte: como se concluiu que, por exemplo, o identificador ‘13’ faz parte do ‘’? Dirá o leitor, e com razão: as sucessivas combinações de ‘0’s e ‘1’s nas colunas à esquerda encontram-se ordenadas conforme a convenção enunciada aquando do 2º Projecto. Numerando consecutivamente, de cima para baixo, essas combinações {vidé, à esquerda da Tabela, entre parêntesis: ‘0’, ‘1’, ‘2’, … até ‘15’}, confere-se qual o valor que ‘R’ assume para a combinação etiquetada por ‘13’ – e, porque se constata que, aí, R=1, então é pacífico que, o ‘’ deverá comportar o número ‘13’… Há, entretanto, que acentuar que o circuito tem apenas 4 variáveis… Isso viabiliza o escrever toda a Tabela de Verdade numa única folha de papel… Mas é inevitável a pergunta: e se a saída do circuito depender de mais entradas? Adiante-se desde já que, na continuação destas sessões, se irá considerar um circuito com 11 variáveis – o que remete para uma Tabela com 211=2048 linhas… E não se antecipa agradável a tarefa de a escrever toda para discernir qual a combinação de ‘0’s e ‘1’s a que corresponde, seja, m27 ou M27… Trata-se, pois, de inquirir: qual a combinação de ‘0’s e ‘1’s – e, por conseguinte, qual a expressão algébrica – correspondente a algum mintermo ‘mi’ ou maxtermo ‘Mj’ genérico – ou, vice-versa, qual o índice em ‘mi’ ou ‘Mj’ correspondente à expressão algébrica de um dado mintermo ou maxtermo? E responder a isso sem ter que escrever a Tabela “toda”! É isso que se irá ver a seguir. Prof V Vargas, IST Sistemas de Numeração 26/11/13, Pg 3/12 Prof V Vargas, IST Sistemas de Numeração Sistemas de Numeração 26/11/13, Pg 4/12 / Conversão mi/Mj Expressões Algébricas Aquando do estabelecimento da convenção relativa ao preenchimento das colunas que representam as entradas do circuito, vidé 2º Projecto, acentuou-se: cada coluna é a repetição “por-aí-abaixo” de ciclos contendo, cada um, alguns ‘0’s logo seguidos do mesmo número de ’1’s... O ciclo da coluna mais à direita, ‘A’, e que é ‘01’, contém 1 ‘0’ (e 1 ‘1’); o da coluna que lhe fica à esquerda, ‘H’, e que é ‘0011’, contém 2 ‘0’s; o da coluna à esquerda desta última, ‘P’, e que é ‘00001111’, contém 4 ‘0’s; e o da coluna à esquerda desta última, ‘M’, e que é ‘0000000011111111’, contém 8 ‘0’s. Por comodidade, escreveram-se ao lado esses valores {8, 4, 2, 1}, entre parêntesis, mesmo abaixo de cada coluna… Esses valores não são quaisquer: são potências-de-2 consecutivas (23, 22, 21, 20); visto de outra maneira, se se enumerar as sucessivas colunas por {k = 3, 2, 1, 0}, o valor sob cada coluna é, precisamente, 2k. Convencionando que cada coluna tem um peso – que é o valor abaixo dela –, constata-se o seguinte: o número de ordem de cada linha (‘0’, ‘1’, ‘2’, até ‘15’) é a soma dos pesos das colunas em que se encontram os ‘1’s. Na prática, e porquanto tais pesos são potências-de-2, aquele número de ordem vem a ser uma soma de algumas potências-de-2 (concretamente, as correspondentes às colunas em que a linha assume o valor ‘1’). Eis alguns exemplos: – seja a linha onde a combinação das entradas {M, P, H, A} é ‘0001’; somente a coluna ‘A’ exibe um ‘1’; posto que ela tem peso 1, o resultado de acordo com o algoritmo acima é: 1=20=1; – seja a linha onde aquela combinação é ‘0010’; somente a coluna ‘H’ exibe um ‘1’; posto que ela tem peso 2, o resultado do algoritmo acima é: 2=21=2; – seja a linha onde aquela combinação é ‘0100’; somente a coluna ‘P’ exibe um ‘1’; posto que ela tem peso 4, o resultado do algoritmo acima é: 4=22=4; – seja a linha onde aquela combinação é ‘1000’; somente a coluna ‘M’ exibe um ‘1’; posto que ela tem peso 8, o resultado do algoritmo acima é: 8=23=8; – seja a linha onde aquela combinação é ‘1100’; existem duas colunas {M e P} com ‘1’; tendo elas pesos 8 e 4, respectivamente, o resultado do algoritmo acima é: 8+4=23+22=12; – seja enfim a linha onde aquela combinação é ‘1011’; existem três colunas {M, H e A} com ‘1’; tendo elas pesos 8, 2 e 1, respectivamente, o resultado do algoritmo acima é: 8+2+1=23+21+20=11. (Abra-se um parêntesis: ao longo da disciplina “Sistemas Digitais”, é assaz frequente ter que se determinar a correspondência entre qualquer uma das dezasseis combinações das entradas da Tabela ao lado e o respectivo número de ordem (ou vice-versa) – pelo que convém que o leitor a saiba fazer mentalmente, num ápice!). Compreendido o algoritmo para traduzir uma combinação de ‘0’s e ‘1’s no correspondente número de ordem, é pacífico como fazer o contrário: dado um número de ordem, determinar a correspondente combinação de ‘0’s e ‘1’s. O ponto de partida é o seguinte: um número de ordem (de uma linha) é uma soma de algumas potências-de-2 – pelo que “tudo” se resume a determinar quais as potências-de-2 cuja adição resulta naquele número de ordem. Seja, como exemplo, a determinação da combinação de ‘0’s e ‘1’s correspondente a 25. Então, – a maior potência-de-2 não superior a 25 é 16=24; 25 excede 16 em 25-16=9; – a maior potência-de-2 não superior a 9 é 8=23; 9 excede 8 em 9-8=1; – a maior potência-de-2 não superior a 1 é 1=20; 1 excede 1 em 1-1=0. Ou seja: 25 = 16 + 8 + 1 (= 24 + 23 + 20). De que se deduz: a combinação pretendida terá ‘1’ nas colunas cujos pesos são {16, 8 e 1} – ou, o que é o mesmo, nas colunas numeradas {4, 3 e 0} (que são os expoentes das potências-de-2 cuja soma perfaze 25) – e terá ‘0’ nas restantes: ‘11001’. Dela, é trivial escrever a expressão algébrica do mintermo m25, vidé ao lado. Seja agora, como exemplo, a determinação da combinação de ‘0’s e ‘1’s correspondente a 45. Procedendo como no exemplo precedente, deduz-se 45 = 32 + 8 + 4 + 1 = 25 + 23 + 22 + 20. De que se deduz: a combinação pretendida terá ‘1’ nas colunas de pesos {32, 8, 4 e 1} – ou, o que é o mesmo, nas colunas numeradas 5, 3, 2 e 0 (que são os expoentes das potências-de-2 cuja soma perfaz 45) – e terá ‘0’ nas restantes: ‘101101’. Dela, é trivial escrever a expressão algébrica do maxtermo M45… O algoritmo usado é trivial: pouco mais há a fazer que memorizar potências-de-2 e fazer subtracções… Mas não é lá muito cativante, mormente se o número de ordem for muito grande… Há que investigar outro método… Prof V Vargas, IST Sistemas de Numeração 26/11/13, Pg 5/12 Prof V Vargas, IST Sistemas de Numeração Sistemas de Numeração 26/11/13, Pg 6/12 / Intermezzo: Como contar? Recapitulando: alguém precisa de registar uma quantidade, seja “quarenta e cinco”; esta expressão espraia-se por dezasseis (!) caracteres, pelo que ninguém se admirará do esforço da humanidade no sentido de a traduzir numa forma compacta… O leitor tê-la-á apreendido no banco da primária: simplesmente ‘45’, que já só envolve dois dígitos. Ela está conforme ao assim denominado “Sistema de Numeração Decimal” – que consiste numa hábil escolha entre 10 dígitos, a saber ‘0’, ‘1’, …, ‘9’. O desafio agora é: como escrever aquela mesma quantidade sob a forma de uma escolha de entre, apenas, 2 dígitos: ‘0’ e ‘1’? Por mor de curiosidade – que o saber não ocupa lugar –, a resposta irá emergir no seguimento de uma curta incursão a alguns dos sistemas de numeração euro-asiáticos: Sistema Unário: Poderá o leitor imaginar o Fred Flintstone dirigir-se ao pedreiro local para lhe encomendar uma dúzia de pedras lascadas… Como fará o pedreiro para a registar? Uma praxis verosímil será dispor, ao lado uns dos outros, uma série de doze palitos (iguais)… Este sistema é dito de unário – pois recorre a, somente, um símbolo (o palito) – e aditivo: quantidades maiores volvem-se em adicionar mais palitos… Quiçá ainda restem hoje vestígios deste sistema: aquando do jogo (de cartas) da sueca, é comum, no início, um dos jogadores traçar, num papel, quatro riscos verticais para simbolizar a menor pontuação que uma equipa necessita acumular para ganhar… Mas, quando as quantidades em causa são algo maiores, é claro que o sistema unário se revela ineficiente… Sistemas M-ários: A maneira óbvia de compactar a representação de quantidades é substituir conjuntos de palitos por algum outro símbolo específico: o Sistema passa a suportar-se em vários símbolos. Adiante, revêm-se alguns sistemas assim: Sistema sumério: são definidos 60 símbolos cuneiformes – para representar as quantidades ‘1’, …, ‘60’ (vidé ao lado os que representam ‘1’ e ‘10’). Para representar quantidades maiores, justapõem-se alguns deles… Sistema egípcio (cerca de 1600 aC): são definidos 7 hieróglifos – para representar as quantidades ‘1’, ‘10’, ‘100’, …, ‘1000000’ (vidé ao lado). Para representar outras quantidades, justapõem-se alguns desses símbolos, a ordem sendo arbitrária (vidé ao lado uma das possíveis representações de ‘218’)… Sistema ático (Grécia, século III AC): são definidos 6 símbolos – para representar as quantidades ‘1’, ‘5’, ‘10’, ‘100’, ‘1000’ , ‘10000’ (vidé ao lado). Para representar outras quantidades, justapõem-se alguns desses símbolos, a ordem sendo arbitrária (vidé ao lado duas possíveis representações de ‘210’)… Sistema romano: são definidos 7 símbolos – para representar as quantidades ‘1’, ‘5’, ‘10’, ‘50’, ‘100’ , ‘500’, ‘1000’ (vidé ao lado). Para representar outras quantidades, justapõem-se alguns desses símbolos, a ordem não sendo arbitrária (o leitor pode constatá-lo nas representações de ‘9’ e ‘11’ em relógios cujas horas são etiquetadas com símbolos romanos: a justaposição de ‘I’ à direita de ‘X’ significa 10+1=11, mas a justaposição de ‘I’ à esquerda de ‘X’ significa 10-1=9)… Sistema indo-árabe (século VI DC, tendo chegado à Europa no século X): são definidos 10 dígitos – para representar ‘1’, ‘2’, ‘3’, ‘4’, ‘5’ , ‘6’, ‘7’, ‘8’, ‘9’ , e – novidade, que nenhum dos sistemas precedentes representa a quantidade zero! – ‘0’. Para representar outras quantidades, justapõem-se alguns dígitos em um número; o Sistema é aditivo – mas a quantidade que um dígito representa depende da sua posição no seio do número. Como exemplos, vejam-se os casos de 253 e 532. Constata-se que 253=200+50+3 e 532=500+30+2, ou seja: – em ‘253’, o ‘5’ representa 50; mas em ‘532’ o ‘5’ representa 500! – em ‘253’, o ‘3’ representa mesmo 3; mas em ‘532’ o ‘3’ representa 30! – em ‘253’, o ‘2’ representa 200; mas em ‘532’ o ‘2’ representa mesmo 2! Estes exemplos ilustram que cada uma das posições dum número tem um peso específico. E desenvolvendo 253=2×100+5×10+3×1=2×102+5×101+3×100 e 532=5×100+3×10+2×1=5×102+3×101+2×100, ficam claros os pesos em causa: a posição mais à direita tem peso ‘1’, a que lhe está logo à esquerda tem peso ‘10’, e continuando para a esquerda, as posições têm pesos que são as sucessivas potências-de-10: ‘1’, ‘10’, ‘100’, ‘1000’… (Para mais detalhes, sugere-se a consulta da Tese de Mestrado de Fernando Almeida, FCUP/2007) Prof V Vargas, IST Sistemas de Numeração 26/11/13, Pg 7/12 Prof V Vargas, IST Sistemas de Numeração Sistemas de Numeração 26/11/13, Pg 8/12 / Sistemas de Numeração Posicional Recapitulando: no Sistema indo-árabe, o valor representado por um número é a soma dos dígitos desse número ponderados pelas sucessivas potências-de-10. Para um número com n dígitos, isso traduz-se na fórmula Valor d n-1 10n-1 d n-2 10n-2 ... d 2 102 d1 101 d0 100 Ao facto de os pesos serem potências-de-10 não será alheio o estar o sistema indo-árabe suportado num alfabeto de 10 dígitos {‘0’, ‘1’, …, ‘9’}. O que naturalmente leva a uma pergunta: e se, em vez de o alfabeto conter, não 10, mas um outro número, seja b, de dígitos? Precisamente, designa-se de Sistema de Numeração posicional de base ‘b’ um sistema suportado num alfabeto de b símbolos com a seguinte propriedade: o valor representado por um número é a soma dos dígitos desse número ponderados pelos pesos das posições que esses dígitos ocupam no número – pesos esses que são as sucessivas potências-de-b: Valor d n-1 bn-1 d n-2 bn-2 ... d 2 b 2 d1 b1 d0 b0 Ao lado, listam-se as representações dos primeiros 19 inteiros (não-negativos) para quatro sistemas de numeração posicionais, ditos de decimal, binário, octal e hexadecimal. Para cada um deles, indica-se a respectiva base (respectivamente: 10, 2, 8 e 16), o nome genérico dos seus símbolos, o respectivo alfabeto, e alguns pesos (potências-de-b). Por extenso, – o alfabeto do sistema binário comporta dois símbolos: {‘0’ e ‘1’}; – o alfabeto do sistema octal comporta oito símbolos: {‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’}; – o alfabeto do sistema hexadecimal comporta dezasseis símbolos: {‘0’, …, ‘9’, ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’}, o que significa: para representar o algarismo dez, usa-se o hexadecimal ‘A’, para representar onze, usa-se ‘B’, etc… O leitor poderá conferir que a lista de números na bem conhecida base-10 segue o seguinte “algoritmo”: na coluna mais à direita, inscreve-se, de cima abaixo, os sucessivos dígitos do alfabeto: ‘0’, ‘1’, …, ‘9’; esse ciclo – de comprimento 10 – é depois repetido por baixo, e novamente repetido…; na coluna que lhe fica à esquerda, o ciclo tem comprimento 100: nele, ocorrem 10 ‘0’ (omitidos), seguem-se-lhe 10 ‘1’, etc.; na coluna que lhe fica à esquerda, o ciclo tem comprimento 1000: nele, ocorrem 100 ‘0’ (omitidos), seguem-se-lhe 100 ‘1’, etc… As listas de números nas demais bases seguem o mesmo “algoritmo”: na coluna mais à direita, inscreve-se, de cima abaixo, os sucessivos símbolos do alfabeto (de b símbolos); esse ciclo – de comprimento b – é depois repetido por baixo, e novamente repetido ad infinitum…; na coluna que lhe fica à esquerda, o ciclo tem comprimento b2: nele, ocorrem b ‘0’s (omitidos), seguemse-lhe b ‘1’s, etc.; na coluna que lhe fica à esquerda, o ciclo tem comprimento b3: nele, ocorrem b2 ‘0’s (omitidos), seguemse-lhe b2 ‘1’s, etc… Assim procedendo, constata-se que uma dada quantidade de objectos – seja dezoito – se representa, naquelas bases, por, respectivamente, 18(10), 10010(2), 22(8) e 12(16). Note-se que, para não haver ambiguidade acerca da base de numeração em que se encontra um número, ele é acompanhado duma referência – que vem a ser essa base entre parêntesis (Ou seja: sem essa referência, desconhece-se a base em que estão escritos aqueles números: 18 poderia estar na base 9, 10010 poderia estar na base 10, 22 poderia estar na base 3 e 12 poderia estar na base …) Aqueles números ilustram claramente a fórmula geral acima (fazendo, é claro, as contas na conhecida base 10): 18(10) 1×101+8×100 = 10+8 = 18(10); 10010(2) 1×24+1×21 = 16+2 = 18(10); 22(8) 2×81+2×80 = 16+2 = 18(10); 12(16) 1×161+2×160 = 16+2= 18(10). A terminar: a base 10 é aquela com que o leitor terá aprendido a lidar na primária… Já a base 2 é a que suporta os Sistemas Digitais (inclusive os modernos computadores) – que, se tem visto, só reconhecem dois símbolos. Ela, todavia, pois que eventualmente vem a traduzir-se em longas sucessões de ‘0’s e ‘1’s, é por demais incómoda para os seres humanos – pelo que a praxis comum é compactá-la nas bases 8 e 16. É o que se verá a seguir… Prof V Vargas, IST Sistemas de Numeração 26/11/13, Pg 9/12 Prof V Vargas, IST Sistemas de Numeração Sistemas de Numeração 26/11/13, Pg 10/12 / Conversão entre Bases Os Sistemas de Numeração mais usados no contexto de Sistemas Digitais são os de base 10, 2, 8 e 16. E natural é que se ponha a seguinte pergunta: dado um número que representa alguma quantidade numa dessas bases, como obter o número equivalente (isto é: que representa essa mesma quantidade) em alguma outra dessas bases? A este respeito, é trivial passar/converter da base 2 para as bases 8 ou 16, e vice-versa: números nestas duas bases podem entender-se como representações comprimidas da representação na base 2. Vejam-se exemplos: – Compressão de Binário em Octal ou Hexadecimal: – seja um número escrito na base 2: 1011100(2); para o converter para a base 8, procede-se mentalmente à repartição dos seus dígitos em grupos-de-3 (recorde: 8=23), da direita para a esquerda (e, se preciso, antepondo ‘0’s à esquerda); conclui-se substituindo cada trio de bits pelo seu equivalente na base 8 (vidé ao lado); – seja um outro número na base 2: 10110100110(2); para o converter para a base 16, procede-se mentalmente à repartição dos seus dígitos em grupos-de-4 (recorde: 16=24), da direita para a esquerda (e, se preciso, antepondo ‘0’s à esquerda); conclui-se substituindo cada quarteto de bits pelo seu equivalente na base 16 (vidé ao lado): – Expansão de Octal ou Hexadecimal em Binário: – seja um número escrito na base 8: 162(8); para o converter para a base 2, substitui-se cada dígito pelo trio de bits que o representa na base 2 (e removem-se eventuais ‘0’s que venham a ocorrer à esquerda, vidé ao lado): – seja um número escrito na base 16: C03F(16); para o converter para a base 2, substitui-se cada símbolo pelo quarteto de bits que o representa na base 2 (e removem-se eventuais ‘0’s que venham a ocorrer à esquerda): – Conversão de Octal em Hexadecimal ou vice-versa: – como corolário: para converter um número escrito na base 8 para a base 16 (ou vice-versa), procede-se primeiramente à sua expansão, para a base 2, e logo depois à sua compressão, para a outra base. A passagem/conversão de qualquer base b para a base 10 logra-se como já se ilustrou: somam-se os dígitos ponderados pelos pesos (potências-da-base b) das posições que ocupam no número… Isto é válido mesmo quando o número tem parte “decimal”, vidé ao lado a conversão do número 351,3(7). A fórmula a aplicar é, como se intui: Valor d n-1 bn-1 d n-2 bn-2 ... d 2 b 2 d1 b1 d 0 b0 d -1 b- 1 d -2 b-2 ... A passagem/conversão inversa – da base 10 para qualquer outra –, e no caso geral de o número dado ter partes inteira e decimal, envolve dois algoritmos (cuja justificação é trivial); seja dado o número 2012,9765625(10)… – para a parte inteira, 2012(10), recorre-se a divisões sucessivas pela nova base. Como exemplo, seja o caso de se pretender convertê-lo para a base 8; faz-se o seguinte (vidé ao lado): – divide-se 2012 por 8 – resultando o quociente 251 e o resto 4; – divide-se esse quociente, 251, por 8 – resultando o quociente 31 e o resto 3; – divide-se esse quociente, 31, por 8 – resultando o quociente 3 e o resto 7. O valor representado por 2012(10) representa-se, na base 8, pelo último quociente seguido dos sucessivos restos (pela ordem inversa em que foram sendo logrados): 3734(8). – se se quiser converter 2012(10) para a base 16, recorre-se a divisões sucessivas – por 16! (vidé ao lado); – se se quiser converter 2012(10) para a base 2, também se recorre a divisões sucessivas – por 2! – ou, mais rápido, expande-se uma das representações a que se chegou (nas bases 8 ou 16) –, chegando-se a 11111011100(2); – para a parte decimal, 0,9765625(10), recorre-se a multiplicações sucessivas pela nova base. Como exemplo, seja o caso de se pretender convertê-lo para base 8; faz-se o seguinte (vidé ao lado): – multiplica-se 0,9765625 por 8 – resultando uma parte inteira 7 e uma parte decimal 0,8125; – multiplica-se essa parte decimal 0,8125 por 8 – resultando uma parte inteira 6 e uma parte decimal 0,5; – multiplica-se essa parte decimal 0,5 por 8 – resultando uma parte inteira 4 e uma parte decimal 0. O valor representado por 0,9765625(10) representa-se, na base 8, por um número cuja parte inteira é 0 e cuja parte decimal vem a ser as sucessivas partes inteiras (pela ordem em que foram sendo logradas): 0,764(8) (Neste exemplo, uma multiplicação volveu-se numa parte decimal nula. Nem sempre isso sucede. Suponha-se que 0,9765625(10) é o valor exacto da intensidade de uma corrente… mas o amperímetro indica 0,97: há um erro – que advém de a sua precisão ser 0,01=10-2. As sucessivas multiplicações volvem-se num número interminável, 0,97(10)→0,76050…(8)! Donde a pergunta: quando se deve parar? A precisão implícita no valor encontrado, 0,76050(8), é 8-5 0,00003; isto é, a mudança de base melhorou a precisão – o que não pode ser: tem que se parar antes que a precisão advenha inferior a 0,01! Ora 8-1=0,125, 8-2=0,015 e 8-3=0,0019… Ou seja: deve parar-se de multiplicar já quando se tiverem duas casas “decimais”: 0,76(8)) Deixa-se, é claro, ao leitor a justificação dos algoritmos acima – que ela é trivial a partir da fórmula acima… Prof V Vargas, IST Sistemas de Numeração 26/11/13, Pg 11/12 Prof V Vargas, IST Sistemas de Numeração Sistemas de Numeração 26/11/13, Pg 12/12 / Já estamos prontos a resolver o problema Recorde-se a questão enunciada na abertura desta sessão: qual a combinação de ‘0’s e ‘1’s – e, por conseguinte, qual a expressão algébrica – correspondente a algum mintermo ‘mi’ ou maxtermo ‘Mj’ genérico? Ou, vice-versa, qual o índice em ‘mi’ ou ‘Mj’ correspondente à expressão algébrica de um dado mintermo ou maxtermo? E responder a isso sem ter que escrevinhar a Tabela de Verdade “toda”! Neste momento, já se coleccionaram os conhecimentos necessários para uma resposta justificada. Com efeito, ao leitor não terá certamente escapado a similaridade dos resultados logrados: – pela convenção com que se preenchem as colunas à esquerda de uma Tabela de Verdade (vidé ao lado); – pela fórmula a que obedece a Lista dos primeiros números inteiros (não-negativos) no sistema binário. Em ambos – na Tabela e na Lista: a coluna mais à direita é a repetição do ciclo ‘01’; a coluna à sua esquerda é a repetição do ciclo ‘0011’; a coluna à sua esquerda é a repetição do ciclo ‘00001111’; e a coluna à sua esquerda é a repetição do ciclo ‘0000000011111111’. Há que não olvidar, porém, o seguinte: no sistema binário, os ‘0’s e ‘1’s são dígitos numéricos, mas na Tabela são bits, isto é, símbolos booleanos – que em vez de ‘0’ e ‘1’ bem poderiam ser ‘F’ e ‘V’ ou ‘I’ e ‘A’… Mas fica nítida a vantagem de, em vez de se recorrer a tais ‘F’ e ‘V’, se preferir usar ‘0’s e ‘1’s: se se interpretarem os ‘0’s e ‘1’s das colunas à esquerda da Tabela como dígitos numéricos, então as sucessivas linhas (combinações das variáveis) vêm a ser as representações, em base 2, do respectivo número de ordem: 0, 1, 2... (vidé ao lado). E, pelo exposto atrás, esse número de ordem acaba por ser a soma dos seus ‘1’s ponderados pelas sucessivas potências-de-2 – que, da direita para a esquerda, são ‘1’, ‘2’, ‘4’, ‘8’,… Seguem-se exemplos da questão acima, ambos pressupondo uma função de 6 variáveis {A, B, C, D, E, F}: 1. O primeiro versa ‘M45’: qual a sua expressão algébrica (sem escrever a Tabela de Verdade “toda”…)? – O primeiro passo é converter 45(10) para a base 2 – o que advém célere pela sua conversão prévia para a base 8 (mediante divisões sucessivas por 8), e expandindo depois (para a base 2) o resultado obtido (vidé ao lado); – Com isso, logra-se 101101(2). Daqui, é trivial deduzir a correspondente expressão algébrica: porquanto ‘M’ denota um maxtermo, será uma soma de todas as variáveis; nela, recorde-se, cada variável aparece na forma normal ou complementar, consoante respectivamente essa variável for ‘0’ ou ‘1’ naquele número ‘101101’… O resultado de tais considerandos será A B C D E F . 2. O segundo exemplo versa a questão contrária: qual a representação compacta de ABCDEF ? – O primeiro passo é escrever a combinação de variáveis que corresponde àquela expressão. Porquanto ela é um produto de todas as variáveis, trata-se um mintermo; neste, recorde-se, cada variável aparece na forma normal ou complementar, consoante respectivamente essa variável for ‘1’ ou ‘0’… A combinação de variáveis será então ‘110101’. – Interpretando-a como um número na base 2, 110101(2), há agora que convertê-lo para a base 10. O mais célere será, por compactação, convertê-lo previamente para a base 8 – e, logo depois, aplicando a costumeira fórmula (soma de potências-de-8), lograr o correspondente número na base 10; o resultado é 53. De que se conclui que a expressão dada é o mintermo ‘m53’. (Poderá parecer algo forçada a questão que motivou esta sessão sobre Sistemas de Numeração… – mas não o é: nas sessões adiante, ir-se-á proceder (e justificar-se-á porquê) à violação deliberada da convenção que desde o início presidiu à elaboração as Tabelas de Verdade: o preenchimento das colunas que representam as entradas do circuito são a repetição “por-aí-abaixo” de ciclos contendo, cada um, alguns ‘0’s logo seguidos do mesmo número de ’1’s... Ao cometer-se essa violação, o resultado é virem a ser outras as posições relativas das linhas da Tabela – e natural é perguntar: aonde vai ‘parar’ a linha ‘tal’? É precisamente essa pergunta que motivou este intermezzo)