<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: And Paiva</title>
    <description>The latest articles on DEV Community by And Paiva (@xornotor).</description>
    <link>https://dev.to/xornotor</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1138296%2F4f0db37f-ba46-4e4b-9ee0-ca38af00d0cf.jpeg</url>
      <title>DEV Community: And Paiva</title>
      <link>https://dev.to/xornotor</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xornotor"/>
    <language>en</language>
    <item>
      <title>Representação numérica na computação</title>
      <dc:creator>And Paiva</dc:creator>
      <pubDate>Thu, 12 Sep 2024 22:36:24 +0000</pubDate>
      <link>https://dev.to/xornotor/representacao-numerica-na-computacao-31ml</link>
      <guid>https://dev.to/xornotor/representacao-numerica-na-computacao-31ml</guid>
      <description>&lt;p&gt;No meu &lt;a href="https://dev.to/xornotor/afinal-o-que-sao-os-0s-e-1s-3jdb"&gt;artigo anterior&lt;/a&gt;, falei sobre o que são os 0's e 1's no mundo da computação.&lt;/p&gt;

&lt;p&gt;Para entender como conseguimos representar dados mais complexos a partir de 0's e 1's, é necessário entender sobre sistemas de numeração e representação numérica.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sistemas de representação numérica
&lt;/h2&gt;

&lt;p&gt;Estamos acostumados com o sistema de numeração &lt;u&gt;&lt;strong&gt;decimal&lt;/strong&gt;&lt;/u&gt; (isto é, &lt;strong&gt;sistema de base 10&lt;/strong&gt;). Representamos números combinando 10 possíveis símbolos (&lt;strong&gt;0&lt;/strong&gt;, &lt;strong&gt;1&lt;/strong&gt;, &lt;strong&gt;2&lt;/strong&gt;, &lt;strong&gt;3&lt;/strong&gt;, &lt;strong&gt;4&lt;/strong&gt;, &lt;strong&gt;5&lt;/strong&gt;, &lt;strong&gt;6&lt;/strong&gt;, &lt;strong&gt;7&lt;/strong&gt;, &lt;strong&gt;8&lt;/strong&gt;, &lt;strong&gt;9&lt;/strong&gt;) de modo a representar quantidades. Mas este não é o único jeito.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fefqlu1mr4ia4ysy2ij6a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fefqlu1mr4ia4ysy2ij6a.png" alt="Exemplo de representação numérica no sistema decimal, com os respectivos pesos de cada dígito" width="600" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O sistema de numeração &lt;u&gt;&lt;strong&gt;binário&lt;/strong&gt;&lt;/u&gt; (ou &lt;strong&gt;sistema de base 2&lt;/strong&gt;) é usado para representar quantidades com apenas dois símbolos: &lt;strong&gt;0&lt;/strong&gt; e &lt;strong&gt;1&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Assim como no sistema decimal, podemos combinar 0's e 1's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10 em binário representa 2 em decimal;&lt;/li&gt;
&lt;li&gt;11 representa 3;&lt;/li&gt;
&lt;li&gt;100 representa 4;&lt;/li&gt;
&lt;li&gt;e daí por diante.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqgka574x8zdwyqhk5v4i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqgka574x8zdwyqhk5v4i.png" alt="Representação abstrata de dígitos binários em cor verde sobre um fundo preto" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Outros sistemas comumente utilizados no mundo da computação são os sistemas &lt;u&gt;&lt;strong&gt;octal&lt;/strong&gt;&lt;/u&gt; (&lt;strong&gt;base 8&lt;/strong&gt;) e &lt;u&gt;&lt;strong&gt;hexadecimal&lt;/strong&gt;&lt;/u&gt; (&lt;strong&gt;base 16&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;No sistema octal, formamos números utilizando apenas os símbolos de &lt;strong&gt;0&lt;/strong&gt; a &lt;strong&gt;7&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;No sistema hexadecimal, além de &lt;strong&gt;0&lt;/strong&gt; a &lt;strong&gt;9&lt;/strong&gt;, utilizamos &lt;strong&gt;A&lt;/strong&gt;, &lt;strong&gt;B&lt;/strong&gt;, &lt;strong&gt;C&lt;/strong&gt;, &lt;strong&gt;D&lt;/strong&gt;, &lt;strong&gt;E&lt;/strong&gt; e &lt;strong&gt;F&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Decimal&lt;/th&gt;
&lt;th&gt;Binário&lt;/th&gt;
&lt;th&gt;Octal&lt;/th&gt;
&lt;th&gt;Hexadecimal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;101&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;110&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;111&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;1000&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;1001&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;1010&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;1011&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;1100&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;1101&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;1110&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;1111&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;F&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Dígitos e seus pesos
&lt;/h2&gt;

&lt;p&gt;No sistema decimal, os dígitos de um número podem ser classificados como &lt;strong&gt;unidade&lt;/strong&gt;, &lt;strong&gt;dezena&lt;/strong&gt;, &lt;strong&gt;centena&lt;/strong&gt;... Essas nomenclaturas estão associadas a &lt;u&gt;&lt;strong&gt;pesos&lt;/strong&gt;&lt;/u&gt;.&lt;/p&gt;

&lt;p&gt;Um dígito de dezena possui um peso 10 vezes maior que um dígito de unidade; um dígito de centena, 10 vezes maior que o de dezena; e assim vai.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft4w5hry0lv3y1pxm0efk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft4w5hry0lv3y1pxm0efk.png" alt="Representação dos pesos de um número decimal" width="800" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do mesmo modo, no sistema binário, cada dígito tem um &lt;u&gt;&lt;strong&gt;peso&lt;/strong&gt;&lt;/u&gt;.&lt;/p&gt;

&lt;p&gt;Geralmente o bit mais à esquerda é chamado de &lt;strong&gt;&lt;u&gt;Bit Mais Significativo&lt;/u&gt;&lt;/strong&gt; (Most Significant Bit, &lt;strong&gt;MSB&lt;/strong&gt;), e o bit mais à direita, &lt;strong&gt;&lt;u&gt;Bit Menos Significativo&lt;/u&gt;&lt;/strong&gt; (Least Significant Bit, &lt;strong&gt;LSB&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ee73jmsj7c08bh2z5eh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ee73jmsj7c08bh2z5eh.png" alt="Representação dos pesos de um número binário" width="800" height="521"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Agrupando bits e representando números
&lt;/h2&gt;

&lt;p&gt;Na computação, chamamos os símbolos binários de &lt;strong&gt;&lt;u&gt;bits&lt;/u&gt;&lt;/strong&gt; (o termo bit é a abreviação de &lt;em&gt;binary digit&lt;/em&gt;, ou dígito binário, em português). Geralmente, os bits são agrupados em unidades maiores, por exemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 nibble = 4 bits;&lt;/li&gt;
&lt;li&gt;1 byte = 8 bits;&lt;/li&gt;
&lt;li&gt;1 word = 16 bits.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Geralmente, o &lt;u&gt;&lt;strong&gt;byte&lt;/strong&gt;&lt;/u&gt; é tomado como unidade de medida para quantificar o tamanho de arquivos, velocidade de upload/download e etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj2clm3updg9g7nx7s0eh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj2clm3updg9g7nx7s0eh.png" alt="Representação de um byte, com destaque para os bits MSB e LSB" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Com 1 byte, podemos representar &lt;strong&gt;256 valores diferentes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Motivo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Um bit pode assumir &lt;u&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/u&gt; valores possíveis (0 ou 1);&lt;/li&gt;
&lt;li&gt;Um byte é um grupo de &lt;u&gt;&lt;strong&gt;8&lt;/strong&gt;&lt;/u&gt; bits;&lt;/li&gt;
&lt;li&gt;Logo, podemos representar &lt;strong&gt;2⁸&lt;/strong&gt; = &lt;u&gt;&lt;strong&gt;256&lt;/strong&gt;&lt;/u&gt; combinações diferentes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgw2vxs9fycpcc5qajrtb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgw2vxs9fycpcc5qajrtb.png" alt="Tabela de representação numérica de um byte, com números representados nos sistemas hexadecimal e decimal" width="555" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;"Ah, mas e quanto a valores maiores que 255?"&lt;/p&gt;

&lt;p&gt;Podemos agrupar bytes para formar tipos de dados que representam uma faixa maior de valores.&lt;/p&gt;

&lt;p&gt;No mundo da programação nos dias de hoje, é comum utilizar tipos de dados inteiros de &lt;strong&gt;32 bits&lt;/strong&gt; e &lt;strong&gt;64 bits&lt;/strong&gt;, capazes de representar valores BEEEEEM maiores.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwcsitqqy4arhkc0xopfa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwcsitqqy4arhkc0xopfa.png" alt="Range de representação de valores para diferentes tipos de dados inteiros" width="418" height="412"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Representação de números negativos
&lt;/h2&gt;

&lt;p&gt;Se a gente for traduzir do binário para o decimal, com 1 byte podemos representar quantidades inteiras de 0 a 255.&lt;/p&gt;

&lt;p&gt;Mas e se a gente precisar representar &lt;strong&gt;números negativos&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;Bom, no geral, as duas maneiras mais conhecidas para isso são a representação &lt;u&gt;&lt;strong&gt;sinal-magnitude&lt;/strong&gt;&lt;/u&gt; e a representação &lt;u&gt;&lt;strong&gt;complemento de 2&lt;/strong&gt;&lt;/u&gt; (esta última mais usada).&lt;/p&gt;




&lt;h3&gt;
  
  
  Números negativos: Formato Sinal-Magnitude
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fib1vhv7ss0m0zkzue814.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fib1vhv7ss0m0zkzue814.png" alt="Reta no eixo horizontal, demarcada por números positivos e negativos" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Considerando um grupo de bits, podemos reservar o MSB para representar um sinal.&lt;/p&gt;

&lt;p&gt;Neste caso, &lt;strong&gt;0 representa sinal positivo&lt;/strong&gt;; &lt;strong&gt;1 representa sinal negativo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Na representação Sinal-Magnitude, a parte que representa o valor numérico permanece igual na representação positiva e na negativa.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6geixlz9nmxsm6z69gl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6geixlz9nmxsm6z69gl.png" alt="Representação de números negativos no formato Sinal-Magnitude" width="800" height="599"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Números negativos: Formato Complemento de 2
&lt;/h3&gt;

&lt;p&gt;Na representação por Complemento de 2, também reservamos o MSB para representar o sinal. No entanto, a parte que representa o valor muda.&lt;/p&gt;

&lt;p&gt;Para obter a parte que representa o valor, nós invertemos todos os bits (o que é 0 vira 1 e vice-versa), e depois somamos 1 ao valor invertido.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg2z0wnses7ucc2y0rec9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg2z0wnses7ucc2y0rec9.png" alt="Representação de números negativos no formato Complemento de 2" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;"Ah, mas por que Complemento de 2 é mais usado que Sinal-Magnitude?"&lt;/p&gt;

&lt;p&gt;A representação em Complemento de 2 é mais eficiente para operações aritméticas, como por exemplo a subtração.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffm3m1avcwvgw0d9c9tff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffm3m1avcwvgw0d9c9tff.png" alt="Operação aritmética de subtração usando representação em Complemento de 2" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Representação de números não-inteiros
&lt;/h2&gt;

&lt;p&gt;Assim como podemos representar números inteiros com o sistema de numeração binário, também podemos representar &lt;u&gt;&lt;strong&gt;partes não-inteiras&lt;/strong&gt;&lt;/u&gt;.&lt;/p&gt;

&lt;p&gt;As partes não-inteiras tem &lt;strong&gt;pesos com expoentes negativos&lt;/strong&gt;, levando à geração de valores não-inteiros.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuamd36deg7ufxs7j8ext.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuamd36deg7ufxs7j8ext.png" alt="Representação de pesos em um número binário não-inteiro" width="800" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No geral, os dois formatos de representação mais comuns para números não-inteiros são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;u&gt;&lt;strong&gt;Ponto Fixo&lt;/strong&gt;&lt;/u&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;u&gt;&lt;strong&gt;Ponto Flutuante&lt;/strong&gt;&lt;/u&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Números não-inteiros: Ponto Fixo
&lt;/h3&gt;

&lt;p&gt;A representação em Ponto Fixo estabelece que, dado um conjunto de bits, o &lt;strong&gt;&lt;u&gt;ponto de separação&lt;/u&gt;&lt;/strong&gt; (que a gente geralmente chama de "casa decimal") é &lt;strong&gt;&lt;u&gt;fixado&lt;/u&gt;&lt;/strong&gt; em uma determinada posição.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgt8c49b1o8rog0q7bz3p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgt8c49b1o8rog0q7bz3p.png" alt="Exemplo de representação em ponto fixo" width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O Ponto Fixo pode ter suas partes inteira e fracionária dimensionadas de várias formas.&lt;/p&gt;

&lt;p&gt;Um determinado valor representado em Ponto Fixo Q&lt;u&gt;&lt;strong&gt;m&lt;/strong&gt;&lt;/u&gt;.&lt;u&gt;&lt;strong&gt;n&lt;/strong&gt;&lt;/u&gt; possui:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 bit reservado para sinal;&lt;/li&gt;
&lt;li&gt;
&lt;u&gt;&lt;strong&gt;m&lt;/strong&gt;&lt;/u&gt; bits reservados para a parte inteira;&lt;/li&gt;
&lt;li&gt;
&lt;u&gt;&lt;strong&gt;n&lt;/strong&gt;&lt;/u&gt; bits reservados para a parte fracionária.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwtt124omzwbcqjx1z4pg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwtt124omzwbcqjx1z4pg.png" alt="Exemplo de representação em ponto fixo Q7.8" width="800" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vantagens da representação em ponto fixo:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Eficiência computacional;&lt;/li&gt;
&lt;li&gt;Recomendado para uso em ambientes com poder de computação limitado;&lt;/li&gt;
&lt;li&gt;Os mesmos circuitos para aritmética de números inteiros podem ser usados para cálculos com números de ponto fixo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Desvantagens da representação em ponto fixo:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Falta de flexibilidade e precisão limitada na representação da parte fracionária;&lt;/li&gt;
&lt;li&gt;Erros significativos de arredondamento/truncamento.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pensando nas desvantagens, a IEEE produziu o &lt;strong&gt;&lt;u&gt;Padrão IEEE-754&lt;/u&gt;&lt;/strong&gt; para representação de números em Ponto Flutuante.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13y1w4in3xpqapy1jobo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13y1w4in3xpqapy1jobo.png" alt="Logotipo da IEEE" width="800" height="259"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Números não-inteiros: Ponto Flutuante
&lt;/h3&gt;

&lt;p&gt;Na representação convencional em Ponto Flutuante definida pelo &lt;strong&gt;Padrão IEEE-754&lt;/strong&gt;, podemos ter &lt;u&gt;&lt;strong&gt;precisão simples&lt;/strong&gt;&lt;/u&gt; (&lt;strong&gt;32 bits&lt;/strong&gt;) ou &lt;u&gt;&lt;strong&gt;dupla&lt;/strong&gt;&lt;/u&gt; (&lt;strong&gt;64 bits&lt;/strong&gt;) para representar um número.&lt;/p&gt;

&lt;p&gt;Num número em ponto flutuante, são definidas 3 partes principais:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;u&gt;&lt;strong&gt;Sinal&lt;/strong&gt;&lt;/u&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;u&gt;&lt;strong&gt;Expoente&lt;/strong&gt;&lt;/u&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;u&gt;&lt;strong&gt;Mantissa&lt;/strong&gt;&lt;/u&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mas &lt;strong&gt;para que essas partes servem&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0vukl6c4ye3d5fpsf9j6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0vukl6c4ye3d5fpsf9j6.png" alt="Divisão dos bits nas representações em ponto flutuante de precisão simples e precisão dupla" width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No geral, para recuperar um número a partir da representação em ponto flutuante, calculamos a seguinte fórmula:&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;N=(−1)S⋅(1,M)⋅2E−127
N = (-1)^{S} \cdot (1, M) \cdot 2^{E - 127}
&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;N&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord"&gt;−&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;span class="mclose"&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;S&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;⋅&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;span class="mpunct"&gt;,&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;M&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;⋅&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;2&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;E&lt;/span&gt;&lt;span class="mbin mtight"&gt;−&lt;/span&gt;&lt;span class="mord mtight"&gt;127&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;N&lt;/em&gt;&lt;/strong&gt; = Número;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;S&lt;/em&gt;&lt;/strong&gt; = Sinal;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;E&lt;/em&gt;&lt;/strong&gt; = Expoente;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;M&lt;/em&gt;&lt;/strong&gt; = Mantissa.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mas &lt;strong&gt;como se chegou a essa fórmula&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;Primeiro, vamos entender a parte do &lt;strong&gt;sinal&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Calculando 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;(−1)S(-1)^{S} &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord"&gt;−&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;span class="mclose"&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;S&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
, obtemos o fator multiplicador que atribui o sinal positivo ou negativo ao número.&lt;/p&gt;

&lt;p&gt;Caso S = 0, o fator multiplicador é 1. Caso S = 1, o fator é -1.&lt;/p&gt;


&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;(−1)0=1
(-1)^{0} = 1
&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord"&gt;−&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;span class="mclose"&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mtight"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;



&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;(−1)1=−1
(-1)^{1} = -1
&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord"&gt;−&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;span class="mclose"&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mtight"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;−&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;


&lt;p&gt;Quanto ao expoente e a mantissa:&lt;/p&gt;

&lt;p&gt;A &lt;u&gt;&lt;strong&gt;mantissa&lt;/strong&gt;&lt;/u&gt; carrega o &lt;u&gt;&lt;strong&gt;valor numérico&lt;/strong&gt;&lt;/u&gt;. &lt;/p&gt;

&lt;p&gt;O &lt;u&gt;&lt;strong&gt;expoente&lt;/strong&gt;&lt;/u&gt; determina a &lt;u&gt;&lt;strong&gt;posição da casa&lt;/strong&gt;&lt;/u&gt; que irá dividir a representação binária em parte inteira e parte fracionária.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuu8lpt31gr605swbtfjj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuu8lpt31gr605swbtfjj.png" alt="Exemplo de obtenção do número em ponto flutuante a partir da representação binária" width="800" height="637"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Chamamos esta representação de Ponto Flutuante porque, por meio dela, podemos reposicionar a "casa" de modo dinâmico, e assim, conseguimos algumas &lt;strong&gt;vantagens&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maior precisão (comparada com o ponto fixo);&lt;/li&gt;
&lt;li&gt;Maior flexibilidade no posicionamento da casa;&lt;/li&gt;
&lt;li&gt;Pode representar uma faixa maior de valores.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quanto às &lt;strong&gt;desvantagens&lt;/strong&gt; do ponto flutuante, temos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maior complexidade para operações aritméticas;&lt;/li&gt;
&lt;li&gt;Representação não é totalmente imune a erros de arredondamento/truncamento (ainda assim, os erros estão dentro do limite do aceitável).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo3cyrtq0zh7tj4qixh3n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo3cyrtq0zh7tj4qixh3n.png" alt="Imagem em inglês, contendo uma tabela comparativa entre representação em ponto fixo e representação em ponto flutuante" width="475" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A complexidade e a velocidade das operações aritméticas com números em ponto flutuante não chega a ser uma preocupação tão grande hoje em dia.&lt;/p&gt;

&lt;p&gt;Os processadores e microcontroladores modernos já contam com estruturas dedicadas e otimizadas para operações com ponto flutuante.&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>binary</category>
      <category>datatypes</category>
      <category>digital</category>
    </item>
    <item>
      <title>Afinal, o que são os 0's e 1's?</title>
      <dc:creator>And Paiva</dc:creator>
      <pubDate>Fri, 14 Jun 2024 22:15:43 +0000</pubDate>
      <link>https://dev.to/xornotor/afinal-o-que-sao-os-0s-e-1s-3jdb</link>
      <guid>https://dev.to/xornotor/afinal-o-que-sao-os-0s-e-1s-3jdb</guid>
      <description>&lt;p&gt;Você já deve ter ouvido por aí que o computador "só entende 0's e 1's". Mas &lt;strong&gt;de onde vem esses 0's e 1's&lt;/strong&gt;? O que eles representam?&lt;/p&gt;




&lt;h2&gt;
  
  
  Analógico vs. Digital
&lt;/h2&gt;

&lt;p&gt;Antigamente, os sistemas eletrônicos lidavam com a informação de forma analógica, ou seja, os sinais elétricos que representavam a informação podiam assumir uma infinidade de amplitudes de tensão.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ttx0nukms0f4npxcnu9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ttx0nukms0f4npxcnu9.png" alt="Representação de sinal analógico" width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo: Rádio AM, Rádio FM, TV Analógica.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feebpmeppu1pw0dckqcym.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feebpmeppu1pw0dckqcym.png" alt="Televisão Analógica" width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Todos os sistemas são suscetíveis a ruído, e para informação representada de modo analógico, isto é um grande problema, pois o processamento de sinais analógicos depende de alta precisão na amplitude, a qual é bastante afetada pelo ruído.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmwyak65gm4cn7qifuv3e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmwyak65gm4cn7qifuv3e.png" alt="Representação de sinal analógico e influência do ruído" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;Fonte: &lt;a href="https://www.predig.com/whitepaper/reducing-signal-noise-practice" rel="noopener noreferrer"&gt;https://www.predig.com/whitepaper/reducing-signal-noise-practice&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;A codificação digital veio como uma forma de reduzir erros decorrentes do ruído, e para isso, a informação é representada apenas em regiões de tensão bem definidas.&lt;/p&gt;

&lt;p&gt;(Isso não significa que sistemas digitais são totalmente imunes a erros.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcruyuv2yliivi4jcrznr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcruyuv2yliivi4jcrznr.png" alt="Representação do sinal digital e maior imunidade a ruído" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;Fonte: &lt;a href="https://www.predig.com/whitepaper/reducing-signal-noise-practice" rel="noopener noreferrer"&gt;https://www.predig.com/whitepaper/reducing-signal-noise-practice&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Sinal digital
&lt;/h2&gt;

&lt;p&gt;No geral, um sinal digital pode assumir dois níveis de tensão:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0 V, ao qual atribuímos o valor lógico 0;&lt;/li&gt;
&lt;li&gt;5 V / 3,3 V / 1,8 V / etc. (dependendo da tecnologia de implementação), ao qual é atribuído o valor lógico 1.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrw22udcoibnq9naoyf9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrw22udcoibnq9naoyf9.png" alt="Representação de sinal digital" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Em computação, o "valor lógico" é chamado de &lt;code&gt;bit&lt;/code&gt; (abreviação de &lt;em&gt;binary digit&lt;/em&gt;, ou dígito binário).&lt;/p&gt;

&lt;p&gt;Todos aqueles 0's e 1's dos quais você ouve falar são representados fisicamente pelo fluxo de sinais elétricos, os quais são controlados por meio de dispositivos eletrônicos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flcheynjlsk261ga1yzd4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flcheynjlsk261ga1yzd4.png" alt="Representação abstrata de zeros e uns" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Transistores e Portas Lógicas
&lt;/h2&gt;

&lt;p&gt;Em circuitos digitais modernos, os dispositivos utilizados para controlar tais sinais são os transistores.&lt;/p&gt;

&lt;p&gt;Transistores são compostos de materiais semicondutores dispostos de maneira inteligente, de modo que podem ser utilizados como chaveadores.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3yo4tex4pww4484e8pk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3yo4tex4pww4484e8pk.png" alt="Representações de transistores" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;"Ah, mas como assim chaveadores?"&lt;/p&gt;

&lt;p&gt;Pense em um interruptor de lâmpada: podemos &lt;strong&gt;LIGÁ-LO&lt;/strong&gt; ou &lt;strong&gt;DESLIGÁ-LO&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Do mesmo modo, o transistor pode ser controlado para permitir ou bloquear a passagem de corrente elétrica.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkjhb9zx6h3izmn4mkkyz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkjhb9zx6h3izmn4mkkyz.png" alt="Interruptor de lâmpada" width="600" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Os transistores são utilizados para construir arranjos levemente mais complexos, aos quais chamamos de "portas lógicas".&lt;/p&gt;

&lt;p&gt;Tais componentes recebem sinais digitais de entrada e retornam um sinal digital como saída, executando uma operação lógica.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fql00nvs4bi24582t2gc5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fql00nvs4bi24582t2gc5.png" alt="Portas lógicas" width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Antes de partir para as portas lógicas:&lt;/p&gt;

&lt;p&gt;Assim como chamamos os dois estados de um interruptor de &lt;strong&gt;LIGADO&lt;/strong&gt; e &lt;strong&gt;DESLIGADO&lt;/strong&gt;, também podemos atribuir significado ao 1 e ao 0, aos quais geralmente chamamos de &lt;strong&gt;TRUE&lt;/strong&gt; e &lt;strong&gt;FALSE&lt;/strong&gt; (&lt;strong&gt;VERDADEIRO&lt;/strong&gt; e &lt;strong&gt;FALSO&lt;/strong&gt;), respectivamente.&lt;/p&gt;




&lt;h3&gt;
  
  
  Porta lógica AND
&lt;/h3&gt;

&lt;p&gt;A porta lógica AND (em português, E) recebe várias entradas e retorna uma saída.&lt;/p&gt;

&lt;p&gt;Tal porta retorna verdadeiro (1) se todas as entradas são verdadeiras (1) ao mesmo tempo; caso contrário, ela retorna falso (0).&lt;/p&gt;

&lt;p&gt;Q = A e B&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkq8tp7dlnmzkr6gz0l96.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkq8tp7dlnmzkr6gz0l96.png" alt="Porta lógica AND" width="500" height="600"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Porta lógica OR
&lt;/h3&gt;

&lt;p&gt;A porta OR (OU) funciona de outra forma:&lt;/p&gt;

&lt;p&gt;Dentre as várias entradas, basta que pelo menos uma delas seja verdadeira (1) para que a saída seja verdadeira (1)&lt;/p&gt;

&lt;p&gt;Q = A ou B&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2hoo3bjw5hbjinpritqr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2hoo3bjw5hbjinpritqr.png" alt="Porta lógica OR" width="500" height="600"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Porta lógica XOR
&lt;/h3&gt;

&lt;p&gt;A porta XOR (OU EXCLUSIVO) funciona de forma diferente: Dadas duas entradas, apenas uma das duas deve receber um sinal verdadeiro (1) para que a saída seja verdadeira (1), o que significa: OU A, OU B (A E B ao mesmo tempo retorna 0)&lt;/p&gt;

&lt;p&gt;Q = ou A, ou B&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faly9rjefmi6dnu1y0ots.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faly9rjefmi6dnu1y0ots.png" alt="Porta lógica XOR" width="417" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Porta lógica NOT
&lt;/h3&gt;

&lt;p&gt;A porta NOT (NÃO) recebe apenas uma entrada, e como o próprio nome diz, o estado lógico da entrada é invertido na saída&lt;/p&gt;

&lt;p&gt;Q = não A&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10vaw6o1gprjo9ua6app.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10vaw6o1gprjo9ua6app.png" alt="Porta lógica NOT" width="500" height="478"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Porta lógica NAND
&lt;/h3&gt;

&lt;p&gt;A porta NAND (NÃO E) é literalmente o contrário da porta AND: só sai falso (0) se todas as entradas forem verdadeiras (1) ao mesmo tempo. É basicamente a mesma coisa que pegar uma porta AND e colocar uma porta NOT na saída.&lt;/p&gt;

&lt;p&gt;Q = não (A e B)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7d943ippup2bcjrnxuw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7d943ippup2bcjrnxuw.png" alt="Porta lógica NAND" width="500" height="600"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Porta lógica NOR
&lt;/h3&gt;

&lt;p&gt;Do mesmo modo, a porta NOR (NÃO OU) é o contrário da porta OU: basta que pelo menos uma das entradas seja verdadeira (1) para que a porta retorne falso (0). É basicamente a mesma coisa que pegar uma porta OR e colocar uma porta NOT na saída.&lt;/p&gt;

&lt;p&gt;Q = não (A ou B)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxx2sn0bzmhn4pxr3kdh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxx2sn0bzmhn4pxr3kdh.png" alt="Porta lógica NOR" width="500" height="600"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Porta lógica XNOR
&lt;/h3&gt;

&lt;p&gt;A porta XNOR (NÃO OU EXCLUSIVO) também é chamada de "porta coincidência", pois ela retorna verdadeiro (1) se suas duas entradas forem iguais. É a mesma coisa de pegar uma porta XOR e colocar uma porta NOT na frente.&lt;/p&gt;

&lt;p&gt;Q = não (ou A, ou B)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F203matsgsdno1f7bwmhz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F203matsgsdno1f7bwmhz.png" alt="Porta lógica XNOR" width="417" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Paralelo entre portas lógicas e programação
&lt;/h2&gt;

&lt;p&gt;Em programação, podemos pensar nos laços condicionais como "aplicações de portas lógicas".&lt;/p&gt;

&lt;p&gt;Geralmente, quando programamos um &lt;code&gt;if&lt;/code&gt;, estabelecemos condições para que um determinado bloco de código seja executado. Cada condição pode ser pensada como um bit (0 se for falsa, 1 se for verdadeira). Podemos fazer operações com esses bits, como se estivéssemos usando portas lógicas. Na maioria das linguagens de programação, podemos usar os operadores &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;, &lt;code&gt;||&lt;/code&gt; e &lt;code&gt;!&lt;/code&gt; para as operações &lt;strong&gt;AND&lt;/strong&gt;, &lt;strong&gt;OR&lt;/strong&gt; e &lt;strong&gt;NOT&lt;/strong&gt;, respectivamente. Estes operadores são chamados de &lt;strong&gt;operadores lógicos&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F45dz2hjnbx2ruq1x1c8w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F45dz2hjnbx2ruq1x1c8w.png" alt="Exemplo de condicionais em programação" width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para além das condicionais, podemos utilizar operações correlatas às portas lógicas para comparar números bit a bit por meio dos &lt;strong&gt;operadores &lt;em&gt;bitwise&lt;/em&gt;&lt;/strong&gt;. Para tratar deste assunto com mais profundidade, é necessário entender melhor sobre sistemas de numeração (explico sobre esse assunto &lt;a href="https://dev.to/xornotor/representacao-numerica-na-computacao-31ml"&gt;neste artigo aqui&lt;/a&gt;).&lt;/p&gt;




&lt;h2&gt;
  
  
  Associações de portas lógicas
&lt;/h2&gt;

&lt;p&gt;Portas lógicas podem ser associadas e conectadas entre si para formar circuitos mais complexos. No geral, é possível construir dois tipos de circuitos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Circuitos combinacionais&lt;/strong&gt;, que propagam os sinais de entrada pelas portas lógicas até a saída, sem realimentação;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Circuitos sequenciais&lt;/strong&gt;, que possuem realimentação arranjada de forma inteligente, formando as peças básicas que constituem o que conhecemos como &lt;strong&gt;memória&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Um exemplo de circuito combinacional é o circuito da imagem abaixo (as bolinhas nas entradas representam portas NOT). Os circuitos sequenciais provavelmente serão tratados em um futuro artigo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl02jcypd3elpt3ipggcv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl02jcypd3elpt3ipggcv.png" alt="Exemplo de circuito lógico" width="715" height="460"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Álgebra Booleana
&lt;/h2&gt;

&lt;p&gt;Além de diagramas, podemos representar os circuitos combinacionais como expressões algébricas, com base na &lt;strong&gt;Álgebra Booleana&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A álgebra booleana foi criada por George Boole, um matemático inglês, durante o século XIX. Com o tempo, o trabalho de Boole se provou útil para representar algebricamente as possíveis relações e operações envolvendo informações binárias.&lt;/p&gt;

&lt;p&gt;Representando as portas lógicas por meio da álgebra booleana:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Porta lógica&lt;/th&gt;
&lt;th&gt;Expressão algébrica&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NOT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;


&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Q=A‾Q = \overline{A} &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;Q&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord overline"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="overline-line"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
, ou 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Q=A′Q = A' &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;Q&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mtight"&gt;′&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AND&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Q=A⋅BQ = A \cdot B &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;Q&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;⋅&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NAND&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Q=A⋅B‾Q = \overline{A \cdot B} &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;Q&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord overline"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;⋅&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="overline-line"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
, ou 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Q=(A⋅B)′Q = (A \cdot B)' &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;Q&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;⋅&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;B&lt;/span&gt;&lt;span class="mclose"&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mtight"&gt;′&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Q=A+BQ = A + B &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;Q&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;+&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NOR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Q=A+B‾Q = \overline{A + B} &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;Q&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord overline"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;+&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="overline-line"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
, ou 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Q=(A+B)′Q = (A + B)' &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;Q&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;+&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;B&lt;/span&gt;&lt;span class="mclose"&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mtight"&gt;′&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;XOR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Q=A⊕BQ = A \oplus B &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;Q&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;⊕&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;XNOR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Q=A⊙BQ = A \odot B &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;Q&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;⊙&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Assim como em expressões aritméticas, expressões booleanas também possuem suas propriedades de operação, algumas delas representadas abaixo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5fullskapoe8awmaqxig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5fullskapoe8awmaqxig.png" alt="Tabela de leis da álgebra booleana" width="601" height="282"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Bilhões de portas lógicas!
&lt;/h2&gt;

&lt;p&gt;Circuitos integrados, ou chips, como são popularmente conhecidos, costumam conter circuitos muito mais complexos e com bilhões de transistores formando um incrível número de portas lógicas, arranjadas de modo inteligente para executar várias funções.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50b97heegtplqhkilh4t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50b97heegtplqhkilh4t.png" alt="Imagem abstrada de circuito integrado" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tomemos como exemplo processadores de computador e de smartphone: várias portas lógicas são arranjadas para formar a Unidade Lógica e Aritmética (ULA), a qual é responsável por efetuar operações matemáticas; Registradores, que guardam temporariamente dados que são utilizados para executar instruções; a Unidade de Controle, que é responsável por disparar os sinais elétricos responsáveis por gerenciar o fluxo de dados no processador e comunicação do processador com periféricos; dentre outras funcionalidades.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2f02yph3tuhiefery9a6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2f02yph3tuhiefery9a6.png" alt="Imagem dos pinos de um processador" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Caso tenha curiosidade em entender melhor como é o processo de fabricação de microchips, recomendo o seguinte vídeo:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/dX9CGRZwD-w"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>digital</category>
      <category>electronics</category>
      <category>computerscience</category>
      <category>circuits</category>
    </item>
  </channel>
</rss>
