[[apendice_logica_binaria]] [appendix] == Lógica Binária e Portas Lógicas === Lógica Binária George Boole publicou a álgebra booleana (em 1854), sendo um sistema completo que permitia a construção de modelos matemáticos para o processamento computacional. O fascinante na lógica booleana é partir de três operadores básicos, que veremos a seguir, e construir *Circuitos Lógicos* capazes de realizar as diversas operações necessárias para um computador. A seguir a descrição de cada um dos 3 operadores básicos. A <> representa os valores da tabela de valores (Tabela Verdade) dos operadores e a representação gráfica, sendo também chamadas de portas lógicas. ==== Operador NOT (((NOT))) O operador unário NOT, negação binária, resulta no complemento do operando, ou seja, será um bit `1` se o operando for `0`, e será `0` caso contrário, conforme podemos confirmar pela tabela de verdade, onde A é o bit de entrada e S é a resposta, ou bit de saída. [[tb_verdade_NOT]] .Tabela verdade do NOT [width="50%",cols="^1s,^1s",frame="topbot",options="header,footer"] |====================== | A | S = NOT A | 0 | 1 | 1 | 0 |====================== ==== Operador AND (((AND))) O operador binário AND, ou conjunção binária devolve um bit 1 sempre que ambos operandos sejam `1`, conforme podemos confirmar pela tabela de verdade, onde A e B são bits de entrada e S é o bit-resposta, ou bit de saída. [[tb_verdade_AND]] .Tabela verdade do NOT [width="50%",cols="^1s,^1s,^1s",frame="topbot",options="header,footer"] |====================== | A | B | S = A AND B | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 |====================== ==== Operador OR (((OR))) O operador binário OR, ou disjunção binária devolve um bit `1` sempre que pelo menos um dos operandos seja `1`, conforme podemos confirmar pela tabela de verdade, onde A e B são os bits de entrada e S é o bit-resposta, ou bit de saída. [[tb_verdade_OR]] .Tabela verdade do NOT [width="50%",cols="^1s,^1s,^1s",frame="topbot",options="header,footer"] |====================== | A | B | S = A OR B | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 ==== Portas lógicas A <> representa as operações da lógica binária na notação gráfica, de Portas Lógicas. [[fig_portas_logicas]] .Representação gráfica dos operadores lógicos AND, OR e NOT, com seus valores de entrada e saída. image::images/sistema-de-numeracao/portas_logicas.jpg[] === Somador de 2 bits Neste capítulo, aprendemos sobre os sistemas de numeração, dando ênfase ao sistema binário, sendo este o sistema adotado pelos computadores. Aprendemos como funciona a aritmética binária, soma, subtração, representação negativa dos números, entre outros. Em seguida, foi apresentada a lógica binária e seus três comandos básicos (AND, OR, NOT). Mas como um computador soma de fato? Primeiramente, precisamos abordar as portas lógicas, elas são a base para as outras operações. A construção de uma porta lógica, utiliza conhecimentos de circuitos eletrônicos formados por diodos, resistências, capacitores entre outros que são abordados em cursos avançados da Eletrônica Analógica, entretanto, seu entendimento foge ao escopo deste livro. TIP: Para melhores detalhes sobre portas lógicas visite: http://www.dcmm.puc-rio.br/cursos/eletronica/html/sld001.htm. O importante agora é sabermos que existem portas lógicas que seguem a lógica binária já apresentada e que estas portas podem ser combinadas, formando os *Circuitos Digitais*. A <> apresenta um Circuito Digital Somador de Dois Bits. (((somador))) [[fig_somador]] .Circuito Digital Somador de Dois Bits formado pelas portas lógicas básicas (AND, OR, NOT). image::images/sistema-de-numeracao/somador.png[] Propomos ao leitor, tentar acompanhar passo a passo o circuito digital proposto e entender como possíveis entradas binárias em A e B terão o resultado esperado nas saídas 'soma' e 'carry'. Em seus testes utilize a <>, e se tiver alguma dúvida sobre os valores da tabela, revisem a operação de soma com dois bits, onde a saída 'soma' representa o valor da soma na unidade corrente e o 'carry' representa o “vai um” da operação. [[tb_somador]] .Tabela de valores da operação de Soma de Dois Bits [width="50%",cols="^1,^1,^2,^3",frame="topbot",options="header,footer"] |====================== |A | B | soma | carry (vai um) | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 |====================== .Vídeo sobre o Circuito Digital Somador de 2 Bits: http://youtu.be/E5yDNF2clQw ifdef::livro-pdf[] ["qrcode", size=10, scaledwidth="30%"] ------------------------- http://youtu.be/E5yDNF2clQw ------------------------- endif::livro-pdf[] ifdef::livro-html[] +++ +++ endif::livro-html[] // Sempre terminar o arquivo com uma nova linha.