{"id":8659,"date":"2015-08-05T06:00:13","date_gmt":"2015-08-05T09:00:13","guid":{"rendered":"http:\/\/www.desfavor.com\/blog\/?p=8659"},"modified":"2015-08-05T03:57:15","modified_gmt":"2015-08-05T06:57:15","slug":"codigo-binario","status":"publish","type":"post","link":"https:\/\/www.desfavor.com\/blog\/2015\/08\/codigo-binario\/","title":{"rendered":"C\u00f3digo bin\u00e1rio."},"content":{"rendered":"<p>Sim, eu sei, voc\u00eas estavam loucos para saber sobre este assunto fascinante, mas nunca encontraram em si a vontade de aprender mais. Nada temam, t\u00e3o certo quando 1 + 1 \u00e9 10, voc\u00eas ficar\u00e3o fascinados com o intrigante mundo dos zeros e uns. Ou talvez odiar\u00e3o. Afinal, neste assunto n\u00e3o existe meio termo.<!--more--><\/p>\n<p>Na nossa vida encontramos diversos casos onde as respostas ficam numa \u00e1rea cinza, sem muita certeza nem para um lado, nem para o outro. A natureza \u00e9 cheia de nuances e possibilidades inexploradas, faz sentido manter a mente aberta e n\u00e3o se contentar com uma vis\u00e3o de mundo que s\u00f3 conceba preto e branco. A n\u00e3o ser, \u00e9 claro, que voc\u00ea seja uma m\u00e1quina, a\u00ed voc\u00ea est\u00e1 preocupado demais em tornar poss\u00edvel aquele coment\u00e1rio babaca na rede social para ficar se perdendo em an\u00e1lises sobre a relatividade do universo. A\u00ed \u00e9 melhor ficar no sim ou n\u00e3o, voc\u00ea tem um trabalho para fazer!<\/p>\n<p>A ideia b\u00e1sica de qualquer sistema bin\u00e1rio n\u00e3o poderia ser mais simples: na menor escala de decis\u00f5es, voc\u00ea sempre tem duas escolhas. O exemplo mais simples (pelo menos atualmente) \u00e9 o do computador: se voc\u00ea se aprofundar o suficiente no que ele faz, ele basicamente s\u00f3 trata da informa\u00e7\u00e3o que recebe dizendo se viu um &#8220;zero&#8221; ou um &#8220;um&#8221;. Todas as coisas incr\u00edveis desse admir\u00e1vel mundo digital podem ser reduzidas a zeros e uns. Desde este texto at\u00e9 um complexo jogo em 3D, todas formas bonitas de representar esses dois singelos valores.<\/p>\n<h2>BITS<\/h2>\n<p>Para entender a l\u00f3gica, voc\u00ea precisa entender o que \u00e9 um bit. Bit significa peda\u00e7o em ingl\u00eas, se bem que a tradu\u00e7\u00e3o mais honesta \u00e9 &#8220;pedacinho&#8221;. Um bit \u00e9 a menor informa\u00e7\u00e3o (vari\u00e1vel) poss\u00edvel. Convenhamos que se n\u00e3o pudesse variar entre pelo menos dois elementos, ia ser bem in\u00fatil. Para ouvir sempre as mesmas respostas j\u00e1 temos nossos relacionamentos amorosos&#8230;<\/p>\n<p>E como esses bits viram informa\u00e7\u00e3o t\u00e3o complexa? A\u00ed surge a gra\u00e7a da progress\u00e3o geom\u00e9trica! Um computador vai te perguntar uma coisa por vez e vai entregar o resultado disso. Imagine que o computador \u00e9 a pior filial do Subway que j\u00e1 existiu: o atendente vai te perguntar UMA vez o que voc\u00ea quer na forma de um &#8220;sim ou n\u00e3o&#8221; e VAI te entregar alguma coisa depois. E pior, voc\u00ea vai ter que aceitar.<\/p>\n<p>Um bit s\u00f3 pode ser 0 ou 1. Existem duas informa\u00e7\u00f5es poss\u00edveis vindas dele. Nesse ponto, est\u00e3o te perguntando se voc\u00ea quer um sandu\u00edche ou n\u00e3o, seja ele de frango ou de merda. Se voc\u00ea trabalha com dois bits, as coisas come\u00e7am a melhorar: voc\u00ea pode ter como resposta 00, 01, 10 e 11! Dobrou! Agora a pergunta pode ser se voc\u00ea quer um sandu\u00edche e se quer que coloquem merda nele. Eu espero que voc\u00ea responda n\u00e3o a pelo menos uma dessas perguntas.<\/p>\n<p>3 bits? 000, 001, 010, 011, 100, 101, 110, 111! Dobrou de novo, oito possibilidades. Agora voc\u00ea pode querer o sandu\u00edche, recusar a merda, aceitar o frango e ainda por cima aceitar uma bebida (muito embora eu n\u00e3o recomende aceitar cegamente uma bebida de quem acaba de te oferecer um sandu\u00edche de merda&#8230;). E isso vai embora! Cada vez dobrando de novo. Quanto mais bits um computador consegue ler por vez, mais complexas s\u00e3o as ordens que ele pode executar. Eventualmente vai sair um pedido do jeito que voc\u00ea quer.<\/p>\n<p>E \u00e9 muito nisso que se baseia a computa\u00e7\u00e3o atual: voc\u00ea j\u00e1 deve ter ouvido falar de processadores de 32bits e 64bits. Pode parecer frescura dos fabricantes &#8211; um daqueles termos t\u00e9cnicos para enganar trouxa &#8211; mas como acabamos de ver, \u00e9 um avan\u00e7o consider\u00e1vel. A cada vez que o processador&#8230; processa, ele l\u00ea 64 bits. E os razo\u00e1veis para bons podem fazer isso umas duas ou tr\u00eas bilh\u00f5es de vezes por segundo, em m\u00e9dia.<\/p>\n<h2>REPRESENTANDO<\/h2>\n<p>E como os zeros e uns viram n\u00fameros e letras? Bom, computadores s\u00e3o como maridos: n\u00e3o fazem nada a n\u00e3o ser que recebam instru\u00e7\u00f5es claras e sejam obrigados. Algu\u00e9m precisa dizer para os computadores o que esses zeros e uns significam. Por isso podemos dizer que o c\u00f3digo bin\u00e1rio \u00e9 mais uma l\u00edngua: diferentes combina\u00e7\u00f5es de seus elementos b\u00e1sicos geram significados. A nossa l\u00edngua usa 23 (ok, 26 para acomodar os nomes de pobre tipo Kerol\u00e2yne) letras diferentes que se combinadas de formas diferentes geram palavras diferentes. No sistema bin\u00e1rio, s\u00e3o duas &#8220;letras&#8221; que viram todo o resto. Inclusive os n\u00fameros. Algu\u00e9m teve que fazer o trabalho chato de definir o que \u00e9 o qu\u00ea. O sistema bin\u00e1rio tem suas regras, e elas s\u00e3o reprodut\u00edveis.<\/p>\n<p>Vamos considerar os n\u00fameros:<\/p>\n<p>0 \u00e9 0 e 1 \u00e9 1. F\u00e1cil, mas&#8230; e o 2? Bom, \u00e9 simples at\u00e9: quando n\u00e3o d\u00e1 mais para representar com um bit, representa com dois. Quando n\u00e3o d\u00e1 mais para fazer com 2, adiciona o terceiro, sempre adicionando mais um 1 no lugar dos zeros, da direita para a esquerda. E eu sei que voc\u00ea pode estar com cara de &#8220;wat&#8221; agora, por isso um exemplo pr\u00e1tico:<br \/>\n<code><br \/>\n<span style=\"color: #ffffff;\">0<\/span>0 = <span style=\"color: #ffffff;\">000<\/span>0<br \/>\n<span style=\"color: #ffffff;\">0<\/span>1 = <span style=\"color: #ffffff;\">000<\/span>1 - precisa de mais um bit<br \/>\n<span style=\"color: #ffffff;\">0<\/span>2 = <span style=\"color: #ffffff;\">00<\/span>10 - o bit adicionado come\u00e7a pelo 0<br \/>\n<span style=\"color: #ffffff;\">0<\/span>3 = <span style=\"color: #ffffff;\">00<\/span>11 - agora esse novo bit j\u00e1 pode virar 1<br \/>\n<span style=\"color: #ffffff;\">0<\/span>4 = <span style=\"color: #ffffff;\">0<\/span>100 - precisou de mais um bit<br \/>\n<span style=\"color: #ffffff;\">0<\/span>5 = <span style=\"color: #ffffff;\">0<\/span>101 - adivinha?<br \/>\n<span style=\"color: #ffffff;\">0<\/span>6 = <span style=\"color: #ffffff;\">0<\/span>110 - o 1 vai para a esquerda, dando lugar para um 0<br \/>\n<span style=\"color: #ffffff;\">0<\/span>7 = <span style=\"color: #ffffff;\">0<\/span>111 - encheu de 1? precisa de mais um bit<br \/>\n<span style=\"color: #ffffff;\">0<\/span>8 = 1000 - eles v\u00e3o come\u00e7ar do zero<br \/>\n<span style=\"color: #ffffff;\">0<\/span>9 = 1001 - o 1 come\u00e7a seu caminho de novo<br \/>\n10 = 1010 - e assim por diante...<br \/>\n<\/code><br \/>\nE lembram como os bits progridem em escala geom\u00e9trica? Tem algo bacana aqui: voc\u00ea sabe quantos n\u00fameros vai poder contar antes de adicionar mais um bit, antes mesmo de contar. Prestem aten\u00e7\u00e3o: s\u00e3o 2 n\u00fameros com 1 bit, s\u00e3o 4 n\u00fameros com 2, ser\u00e3o 8 com 3&#8230; \u00e9 s\u00f3 ir multiplicando por 2 seguidas vezes. E vai observando os n\u00fameros na sequ\u00eancia, de cima pra baixo: o \u00faltimo d\u00edgito sempre vai variar entre 0 e 1, o pen\u00faltimo sempre vai seguir a ordem de 0, 0, 1 e 1, o antepen\u00faltimo de 0, 0, 0, 0, 1, 1, 1 e 1&#8230; e assim vai tamb\u00e9m, em escala geom\u00e9trica. O sistema bin\u00e1rio \u00e9 bem elegante e organizado.<\/p>\n<p>E mais: d\u00e1 pra fazer contas com os n\u00fameros bin\u00e1rios. Vamos fazer 7 &#8211; 3 em n\u00fameros bin\u00e1rios? N\u00e3o? Mas est\u00e1 t\u00e3o divertido&#8230; bom, que seja, eu vou fazer mesmo assim&#8230;<br \/>\n<code><br \/>\n7 = 111 -<br \/>\n3 = <span style=\"color: #ffffff;\">0<\/span>11<br \/>\n-----------<br \/>\n4 = 100<br \/>\n<\/code><br \/>\nH\u00e3? Simples assim? Pois \u00e9. 111 &#8211; 11 \u00e9 100 mesmo! \u00c9 tudo quest\u00e3o de encaixar as casas. Vamos somar?<br \/>\n<code><br \/>\n07 = 111 +<br \/>\n03 = <span style=\"color: #ffffff;\">0<\/span>11<br \/>\n-----------<br \/>\n10 = 122<br \/>\n<\/code><br \/>\nHa! Brincadeira. Na soma n\u00e3o d\u00e1 para seguir a mesma l\u00f3gica. Vamos de verdade:<br \/>\n<code><br \/>\n07 = <span style=\"color: #ffffff;\">0<\/span>111 +<br \/>\n03 = <span style=\"color: #ffffff;\">00<\/span>11<br \/>\n-----------<br \/>\n10 = 1010<br \/>\n<\/code><br \/>\nA ideia \u00e9 que 0 + 0 = 1 (wat), 0 + 1 ou 1 + 0 = 1 (ok!), e 1 + 1 = 10. O que faz sentido, porque 1 + 1 \u00e9 mesmo igual a 2 (vulgo 10 em bin\u00e1rio). Quando voc\u00ea tira um 10, voc\u00ea deixa o 0 na casa e leva o 1 pra frente. 1 + 1 \u00e9 igual a 0, e 0 + 1 \u00e9 igual a 1. Se voc\u00ea completou o ensino fundamental, j\u00e1 entendeu a l\u00f3gica. Pelo menos&#8230; eu espero. Todas as outras contas dispon\u00edveis com os n\u00fameros &#8220;habituais&#8221; valem no sistema bin\u00e1rio.<\/p>\n<p>E as letras? Bom, sempre que poss\u00edvel elas seguem padr\u00f5es parecidos. Normalmente codificamos as letras com 8 bits, j\u00e1 ouviram falar da tabela ASCII? \u00c9 um mapeamento dos caracteres em c\u00f3digo bin\u00e1rio muito comum. Com os 8 bits, temos 128 varia\u00e7\u00f5es dispon\u00edveis, mas para isso ser pr\u00e1tico, gastamos, por exemplo, os 3 primeiros bits para dizer se \u00e9 letra mai\u00fascula ou min\u00fascula. Sobram 5, o que ainda nos permite 32 delas, mais do que o suficiente.<\/p>\n<p>A letra &#8220;a&#8221; min\u00fascula come\u00e7a com 011 para dizer que \u00e9 min\u00fascula (010 seriam as mai\u00fasculas), e 00001 para dizer que \u00e9 a letra &#8220;a&#8221;. Depois disso pode seguir aquela mesma l\u00f3gica dos n\u00fameros: 01100010 \u00e9 a letra &#8220;b&#8221; min\u00fascula. Sabendo <a href=\"http:\/\/www.rapidtables.com\/code\/text\/ascii-table.htm\" target=\"_blank\">esse c\u00f3digo<\/a>, \u00e9 f\u00e1cil (mentira) decifrar o texto abaixo:<\/p>\n<p><code style=\"word-wrap: break-word; max-width: 100%\">010001010111010100100000011101000110010101101110011010000110111100100000011011010111010101101001011101000110111100100000011101000110010101101101011100000110111100100000011011000110100101110110011100100110010100101110<\/code><\/p>\n<p>Lembre-se, vai de 8 em 8. Lembre-se tamb\u00e9m, voc\u00ea vai voltar a ser virgem se fizer essa decodifica\u00e7\u00e3o na ra\u00e7a ao inv\u00e9s de colar num <a href=\"http:\/\/www.roubaixinteractive.com\/PlayGround\/Binary_Conversion\/Binary_To_Text.asp\" target=\"_blank\">tradutor autom\u00e1tico<\/a>.<\/p>\n<h2>E EU COM ISSO?<\/h2>\n<p>Quem disse que eu escrevo textos para te acrescentar algo? Mas para ser honesto, o sistema bin\u00e1rio \u00e9 a funda\u00e7\u00e3o n\u00e3o s\u00f3 do funcionamento dos computadores, mas de muito da tecnologia que usamos. O que \u00e9 digital usa zeros e uns, o que \u00e9 anal\u00f3gico trabalha com dados diversos de acordo com o que o ambiente apresenta como informa\u00e7\u00e3o. O CD (lembra dele?) \u00e9 digital, os dados s\u00e3o gravados na sua superf\u00edcie em zeros e uns na forma de superf\u00edcies que refletem o laser ou n\u00e3o. O vinil \u00e9 anal\u00f3gico: a forma como ele \u00e9 moldado gera sons diferentes de acordo com as ranhuras na superf\u00edcie, por isso ele &#8220;muda&#8221; com o passar do tempo e as condi\u00e7\u00f5es de manuten\u00e7\u00e3o. N\u00e3o precisa passar por um processador antes de exibir a informa\u00e7\u00e3o.<\/p>\n<p>Se voc\u00ea quer programar um computador ou montar um circuito, os conceitos bin\u00e1rios estar\u00e3o em todos os lugares. Os chips, em sua forma mais simples, nada mais fazem do que responder sim ou n\u00e3o quando perguntados. Os programas de computador normalmente trabalham com conceitos de verdadeiro ou falso para tratar as informa\u00e7\u00f5es que recebem. Esse mundo de hoje est\u00e1 fundamentado em zeros e uns.<\/p>\n<p>O que talvez explique muitos dos textos que escrevemos sobre o comportamento do BM nas redes sociais&#8230; pessoas deveriam anal\u00f3gicas, n\u00e3o digitais.<\/p>\n<h3>Para dizer que s\u00f3 n\u00e3o entendeu por que leu esse texto, para dizer que minha nota foi 10 (em bin\u00e1rio), ou mesmo para dizer que eu devo ser divertido em festas: <code style=\"word-wrap: break-word\">011100110110111101101101011010010111001001000000011001000110010101110011011001100110000101110110011011110111001000101110011000110110111101101101<\/code><\/h3>\n","protected":false},"excerpt":{"rendered":"<p>Sim, eu sei, voc\u00eas estavam loucos para saber sobre este assunto fascinante, mas nunca encontraram em si a vontade de aprender mais. Nada temam, t\u00e3o certo quando 1 + 1 \u00e9 10, voc\u00eas ficar\u00e3o fascinados com o intrigante mundo dos zeros e uns. Ou talvez odiar\u00e3o. Afinal, neste assunto n\u00e3o existe meio termo.<\/p>\n","protected":false},"author":3,"featured_media":8660,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32],"tags":[],"class_list":["post-8659","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desfavor-explica"],"_links":{"self":[{"href":"https:\/\/www.desfavor.com\/blog\/wp-json\/wp\/v2\/posts\/8659","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.desfavor.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.desfavor.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.desfavor.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.desfavor.com\/blog\/wp-json\/wp\/v2\/comments?post=8659"}],"version-history":[{"count":0,"href":"https:\/\/www.desfavor.com\/blog\/wp-json\/wp\/v2\/posts\/8659\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.desfavor.com\/blog\/wp-json\/wp\/v2\/media\/8660"}],"wp:attachment":[{"href":"https:\/\/www.desfavor.com\/blog\/wp-json\/wp\/v2\/media?parent=8659"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.desfavor.com\/blog\/wp-json\/wp\/v2\/categories?post=8659"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.desfavor.com\/blog\/wp-json\/wp\/v2\/tags?post=8659"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}