Como um monte de letras de um código fonte transforma-se em voltagens?

Artigo de assunto geral. Como que um monte de letras de um código fonte transforma-se em voltagens?

[ Hits: 18.338 ]

Por: Buckminster em 18/12/2013


Código fonte em voltagens



Como que um monte de letras de um código fonte transforma-se em voltagens?

Quando o vivente está programando, ou seja, virando noites digitando em uma determinada linguagem de programação e ingerindo quantidades absurdas de café, prejudicando o fígado e ficando pançudo, ele está, indiretamente, determinando voltagens que irão passar pelos circuitos, por exemplo, da placa mãe.

Uma placa mãe é uma placa de circuito eletrônico com seus diversos componentes. Um processador, a grosso modo, também é uma placa de circuito eletrônico, porém, em tamanho muito mais reduzido, é um circuito integrado.

O código fonte com seus comandos e instruções é compilado em um processo que não dá para ser explicado minuciosamente aqui, pois envolve análise léxica, análise sintática, etc, e não vem ao caso.

O computador armazena e movimenta as informações de forma eletrônica, podendo utilizar um valor de corrente elétrica. Para um computador representar eletricamente todos os símbolos da linguagem humana, seriam necessárias mais de 100 voltagens diferentes. Uma máquina assim, além de ter custo elevado, seria difícil de construir. Dessa forma, num passado não muito distante, optou-se por construir máquinas binárias capazes de entender apenas dois valores diferentes, o 0 e o 1.

Um bit isolado representa apenas 2 valores, ou seja, em um determinado circuito, uma determinada voltagem pode ser um bit 0 ou um bit 1. E esses bits, que formam os caracteres, são convencionados pela famosa tabela ASCII. A tabela ASCII Completa, contém a tabela dos Caracteres de Controle (0 a 31), a tabela ASCII Normal (32 a 127) e a tabela ASCII Estendida (128 a 255).

Porém, não confunda a tabela ASCII com o padrão Unicode, mais conhecido pelo seu esquema de padronização de transformação (UTF - Unicode Transformation Format). Este é outro assunto que também não vem ao caso agora.

Para a letra "a" se formar na tela do monitor, o processador envia para a placa de vídeo a sequência 01100001, que irá trabalhar essas voltagens e enviá-las ao monitor. O monitor, por sua vez, irá iluminar os pixels correspondentes nas cores determinadas formando a letra "a" na tela. A letra "A" maiúscula, é a sequência 01000001. Cada símbolo da tabela ASCII tem a sua sequência pré-determinada.

É assim que são formadas as letras, as palavras, as frases, etc. Um caractere é formado por uma sequência pré-convencionada de bits. A letra "a" minúscula, por exemplo, é a sequência 01100001 de oito bits, um Byte. E cada um desses bits representa, em um determinado circuito, uma voltagem, cabendo ao processador interpretar esses bits, ou seja, interpretar a sequência de voltagens. O Clock, de maneira geral, é a medida de tempo, é a velocidade com que o processador trabalha essas voltagens. O Clock do processador é medido em MHZ - MegaHertz (ou atualmente, em GHz - GigaHertz); o Hertz é a unidade da frequência.

O monitor tem as linhas e as colunas que formam a resolução (o conceito de resolução é mais amplo, aqui se optou por esse conceito básico).

Por exemplo, a resolução 1440x900 num monitor Widescreen. São 1440 colunas por 900 linhas. A interseção dessas linhas e colunas formam os pixels. A resolução 1440x900 tem 1.296.000 pixels (1440 multiplicado por 900). Quanto maior a resolução, maior o número de pixels e, tecnicamente, melhor será a definição da imagem.

Nos antigos monitores CRT (Catodic Ray Tube - Tubo de Raios Catódicos), tinha um canhão de elétrons que bombardeava uma camada de fósforo (aquela cor de diarréia no tubo quando o monitor estava desligado) fazendo os pixels brilharem em uma determinada cor formando a imagem.

Nos monitores LCD (Liquid Cristal Display - Tela de Cristal Líquido), o fósforo foi substituído pelo cristal líquido e a iluminação é feita por tubos fluorescentes embutidos na lateral e, às vezes, atrás do LCD e temos uma superfície de eletrodo comum e uma barra de eletrodo simples, que controlam quais cristais líquidos respondem a qual carga elétrica, dispensando o canhão de elétrons. Os monitores de LED são telas de LCD nos quais a iluminação é feita por LEDs.

A placa de vídeo envia as voltagens necessárias para o monitor e a intensidade da iluminação faz os pixels brilharem em determinadas cores. Ou seja, é uma propriedade do material empregado, da antiga camada de fósforo e do atual cristal líquido.

Esses materiais quando submetidos a uma determinada voltagem com uma determinada iluminação, brilham numa determinada cor. Num monitor colorido, cada pixel é composto por um conjunto de 3 pontos, verde, vermelho e azul; e cada um desses pontos pode exibir 256 tonalidades diferentes da mesma cor (vermelha, verde e azul - RGB, Red, Green e Blue).

Basicamente, o processador forma a sequência de bits, envia para a placa de vídeo que, por sua vez, envia para o monitor, formando as imagens.

Mas ainda não respondemos à pergunta: "Como que um monte de letras de um código fonte transforma-se em voltagens?".

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Código fonte em voltagens
   3. Respondendo à pergunta
Outros artigos deste autor

VMD no Debian - Instalação e configuração

Permissões do Linux

Encapsulando BIND 9 e Apache 2 para obter maior segurança

kernel Linux otimizado - Compilação e teste

Redes de Computadores · IPtables · Endereços IPs - Explicações básicas

Leitura recomendada

Se preparando para obter certificação LPI

A Origem dos Nomes (parte 2)

Rocky Linux - Novo Substituto do CentOS

Como posso recuperar o boot loader?

Uma análise do software livre e de sua história

  
Comentários
[1] Comentário enviado por px em 18/12/2013 - 03:13h

Só você para me fazer ler um artigo as 3 da matina, kk. Poderia estender esse último assunto sobre a edição de binários (assembly, registradores, etc...) acredito que assim chegaria mais a fundo e próximo de responder a pergunta do título, no mais nota 10, como de costume rsrs.

PS: 01000001 01100111 01110101 01100001 01110010 01100100 01100001 01101110 01100100 01101111 00100000 01101111 00100000 01110000 01110010 11110011 01111000 01101001 01101101 01101111 00100000 01011110 01011110

[2] Comentário enviado por darkstarfire em 18/12/2013 - 10:21h

px:

Aguardando o pr?ximo ^^

[3] Comentário enviado por Buckminster em 18/12/2013 - 14:24h


[2] Comentário enviado por darkstarfire em 18/12/2013 - 10:21h:

px:

Aguardando o pr?ximo ^^


Obrigado px:

01001111 00100000 01110000 01110010 11110011 01111000 01101001 01101101 01101111 00100000 01110011 01100101 01110010 11100001 00100000 01110011 01101111 01100010 01110010 01100101 00100000 01110100 01110010 01100001 01100100 01110101 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01100010 01101001 01101110 11100001 01110010 01101001 01101111 01110011 00100000 01100101 01101110 01110100 11100011 01101111 00101110

01001001 01110011 01110011 01101111 00100000 01110110 01100001 01101001 00100000 01101101 01100101 00100000 01100100 01100001 01110010 00100000 01110101 01101101 01100001 00100000 00100010 01110100 01110010 01100001 01100010 01100001 01101100 01101000 01100101 01101001 01110010 01100001 00100010 00100000 01100100 01100001 01101110 01100001 01100100 01100001 00100001

Não vale usar um tradutor automático!

[4] Comentário enviado por px em 18/12/2013 - 14:49h

@Buckminster:

O próximo será sobre tradução de binários então.

Isso vai me dar uma "trabalheira" danada!

De nada:

01000100 01100001 00100000 01110100 01110010 01100001 01100010 01100001 01101100 01101000 01101111 00100000 01101101 01100001 01101001 01110011 00100000 01100110 01101001 01100011 01100001 00100000 01101100 01100101 01100111 01100001 01101100 00100000 00111010 01000100

[5] Comentário enviado por Buckminster em 18/12/2013 - 15:37h

010101100110111101110101001000000010001001100101011011100110001101101000011001010111001000100010001000000110010001100101001000000110010101111000011001010111001001100011111011010110001101101001011011110111001100100000011100000110000101110010011000010010000001100110011000010111101001100101011100100010000001101110011011110010000001100001011100100111010001101001011001110110111100101110

[6] Comentário enviado por juno em 18/12/2013 - 15:45h

01000011 01100001 01110010 01100001 01101101 01100010 01100001 00100000 01101001 01101101 01100001 01100111 01101001 01101110 01100001 00100000 01110011 11110011 00100000 00100001 00100001 00100001

[7] Comentário enviado por Buckminster em 18/12/2013 - 19:13h


[6] Comentário enviado por juno em 18/12/2013 - 15:45h:

01000011 01100001 01110010 01100001 01101101 01100010 01100001 00100000 01101001 01101101 01100001 01100111 01101001 01101110 01100001 00100000 01110011 11110011 00100000 00100001 00100001 00100001


01000101 01110011 01110100 01101111 01110101 00100000 01101001 01101101 01100001 01100111 01101001 01101110 01100001 01101110 01100100 01101111 00100001

[8] Comentário enviado por px em 18/12/2013 - 19:42h


[7] Comentário enviado por Buckminster em 18/12/2013 - 19:13h:


[6] Comentário enviado por juno em 18/12/2013 - 15:45h:

01000011 01100001 01110010 01100001 01101101 01100010 01100001 00100000 01101001 01101101 01100001 01100111 01101001 01101110 01100001 00100000 01110011 11110011 00100000 00100001 00100001 00100001

01000101 01110011 01110100 01101111 01110101 00100000 01101001 01101101 01100001 01100111 01101001 01101110 01100001 01101110 01100100 01101111 00100001


01001111 00100000 01110000 01100101 01110011 01110011 01101111 01100001 01101100 00100000 01101001 01110010 11100001 00100000 01100110 01101001 01100011 01100001 01110010 00100000 01101100 01101111 01110101 01100011 01101111 00100001 00100000 01110010 01110011 01110010 01110011

[9] Comentário enviado por Buckminster em 18/12/2013 - 19:54h

01000011 01101111 01101110 01100011 01101111 01110010 01100100 01101111 00101110 00100000 01001101 01100001 01110011 00100000 01101100 01101111 01110101 01100011 01101111 00100000 01101010 11100001 00100000 01100101 01110011 01110100 01101111 01110101 00100000 01100101 01110101 00100000 01110100 01110010 01100001 01100100 01110101 01111010 01101001 01101110 01100100 01101111 00100000 01101110 01101111 00100000 00100010 01100010 01110010 01100001 11100111 01101111 00100010 00101110 00100000 01010110 01101111 01110101 00100000 01100011 01101111 01101101 01100101 11100111 01100001 01110010 00100000 01100001 00100000 01110101 01110011 01100001 01110010 00100000 01110101 01101101 00100000 01110100 01110010 01100001 01100100 01110101 01110100 01101111 01110010 00101100 00100000 01110000 01101111 01101001 01110011 00100000 01100100 01100101 01110000 01100101 01101110 01100100 01100101 01101110 01100100 01101111 00100000 01100001 00100000 01100011 01101111 01101001 01110011 01100001 00100000 01110110 01100001 01101001 00100000 01101100 01101111 01101110 01100111 01100101 00101110 00101110 00101110 00100000 01110010 01110011 01110010 01110011

[10] Comentário enviado por px em 18/12/2013 - 21:36h


[9] Comentário enviado por Buckminster em 18/12/2013 - 19:54h:

01000011 01101111 01101110 01100011 01101111 01110010 01100100 01101111 00101110 00100000 01001101 01100001 01110011 00100000 01101100 01101111 01110101 01100011 01101111 00100000 01101010 11100001 00100000 01100101 01110011 01110100 01101111 01110101 00100000 01100101 01110101 00100000 01110100 01110010 01100001 01100100 01110101 01111010 01101001 01101110 01100100 01101111 00100000 01101110 01101111 00100000 00100010 01100010 01110010 01100001 11100111 01101111 00100010 00101110 00100000 01010110 01101111 01110101 00100000 01100011 01101111 01101101 01100101 11100111 01100001 01110010 00100000 01100001 00100000 01110101 01110011 01100001 01110010 00100000 01110101 01101101 00100000 01110100 01110010 01100001 01100100 01110101 01110100 01101111 01110010 00101100 00100000 01110000 01101111 01101001 01110011 00100000 01100100 01100101 01110000 01100101 01101110 01100100 01100101 01101110 01100100 01101111 00100000 01100001 00100000 01100011 01101111 01101001 01110011 01100001 00100000 01110110 01100001 01101001 00100000 01101100 01101111 01101110 01100111 01100101 00101110 00101110 00101110 00100000 01110010 01110011 01110010 01110011


01001011 01001011 01001011 01001011 01001011 00101100 00100000 01101010 11100001 00100000 01100001 01110100 11101001 00100000 01100011 01100001 01101110 01110011 01100101 01101001 00100000 01100100 01100101 00100000 01101111 01101100 01101000 01100001 00100000 01100001 00100000 01110100 01100001 01100010 01100101 01101100 01100001 00101100 00100000 01110010 01110011 01110010 01110011 00101110

01010000 01010011 00111010 506172656920706f722061717569205e5e

[11] Comentário enviado por Buckminster em 18/12/2013 - 22:41h

45752074616d62e96d21

[12] Comentário enviado por juno em 18/12/2013 - 23:23h

20:61:75:61:75:61:75:75:61:20:2e:2e:2e:2e:20:73:1f:20:6d:61:74:65:6d:1f:74:69:63:61:20:70:75:72:61:20:2e:2e:2e:20:6b:6b:6b:6b:6b

[13] Comentário enviado por removido em 19/12/2013 - 07:10h

Traduzindo para o brasileiro: 4-3-3, 4-4-2, 3-5-2, 4-5-1, 3-6-1

[14] Comentário enviado por phoemur em 19/12/2013 - 09:53h

Eu uso python, é bem tranquilo:

>>> frase = 'Parabéns pelo artigo Buckminster'
>>> resultado = []
>>> for elem in frase:
... resultado.append(bin(ord(elem))[2:])
...
>>> lista = ' '.join(resultado)
>>> lista
'1010000 1100001 1110010 1100001 1100010 11101001 1101110 1110011 100000 1110000 1100101 1101100 1101111 100000 1100001 1110010 1110100 1101001 1100111 1101111 100000 1000010 1110101 1100011 1101011 1101101 1101001 1101110 1110011 1110100 1100101 1110010'
>>> lista = ['0b' + elem for elem in lista.split()]
>>> ''.join([chr(int(elem, base = 2)) for elem in lista])
'Parabéns pelo artigo Buckminster'

[15] Comentário enviado por junior em 19/12/2013 - 11:10h

Sou leigo no assunto, então pergunto:

É correto usar o termo "voltagem"?
Assim como, na proporção, poderíamos utilizar: amperagem, "vatagem (W)"?

-

Parabéns pelo artigo!

[16] Comentário enviado por lcavalheiro em 19/12/2013 - 11:47h


[15] Comentário enviado por junior.rocha em 19/12/2013 - 11:10h:

Sou leigo no assunto, então pergunto:

É correto usar o termo "voltagem"?
Assim como, na proporção, poderíamos utilizar: amperagem, "vatagem (W)"?

-

Parabéns pelo artigo!


Amperagem sim, mas uatágem (James Watt, como todo bom inglês, infartaria se seu nome fosse pronunciado como Vatt, já que pronunciar o W como V é um privilégio dos alemães que pronunciam ainda o V como F) não. Usa-se potência mesmo.

[17] Comentário enviado por Buckminster em 19/12/2013 - 18:54h

Obrigado phoemur e junior.rocha.

Voltagem - tensão elétrica medida em volts - Substantivo Feminino - (Está no Dicionário)

Amperagem - s.f. Intensidade da corrente elétrica (está no Dicionário).

[18] Comentário enviado por macalencar em 20/12/2013 - 09:55h

Ótimo artigo...
--
$ gcc comments.c -o bincomment
$ ./bincomment
Segmentation fault
_

[19] Comentário enviado por cytron em 27/12/2013 - 01:02h

Artigo legal !!!!!

Me fez entrar pelo túneo do tempo, voltei uns 15 anos atrás... lá no assembly... madrugadas e madrugadas intermináveis, controlando registradores e "desenroscando parafusos" usando assembly kkkkk. Usando como fonte de conhecimento a "bíblia do programador", tutorial "RBT" e "Guadilajara", algumas coisas do "Nash Leon" também... cadê ele heim? kkkkkk.

Droga! É nessas horas que fico triste por existir o "tempo" e ele "passar". Tem coisas que deveriam ser "etérnas". Como era bom!

Quem é da época sabe exatamente a sensação! Ter a tabela ASCII decorada, tando em decimal quando em hex, decorar até um monte de binários, saber a sequencia dos múltiplos de 8 e impressionar qualquer professor de matemática... 8, 16, 32, 64, 128, .... até o cara pedir pra parar. Coitado, mal sabia ele que era tudo decorado de tanto assembly.

Tinha uns que eram tão fissurados no assembly que já reconhecia até a "linguagem de máquina", (eu por exemplo kkkk), dava um "copy con" e mandava ver no ALT + ...., fazia um ".com" com uns 15 bytes que já mudava o cursos ou mostrava uma frase na tela.

Aqui no VOL deve ter muita gente que sabe e sente o que estou falando.

E quando apareceu o "BB" no Linux? Um verdadeiro show pirotécnico em ASCII, tinha gente que via mesmo um monte de "letrinhas" passando na tela kkkkk. Mas quem era do "underground" ficava "paralizado" com tamanha maravilha.

Mais uma vez torno a repetir.... COMO ERA BOM!

Entendo porque nossos avós e pais ficam as vezes relembrando a vida na roça e dizendo "como era bom" o fogão a lenha, o cheiro da terra, o canto dos pássaros ou qualquer outra coisa da infância. "No nosso mundo" o canto do pássaro era o som do modem US-Robotics conectando em uma BBS.

O que tem a ver essa retrospectiva com o artigo do nosso amigo????

Ele fala sobre os barramentos (indiretamente), ASCII, e outras coisas, tudo ligada diretamente com o programador assembly. O mais tocante para mim foi a parte do vídeo, onde o programador assembly tem que controlar "fisicamente" a placa de vídeo para conseguir mostrar algo na tela, as páginas de vídeo, os pixels e tudo mais! Que maravilha.

[20] Comentário enviado por devauxcl em 02/01/2014 - 21:56h

Excelente Artigo ! Interessante o assunto

[21] Comentário enviado por Buckminster em 03/01/2014 - 02:07h

macalencar, cytron e devauxcl:

obrigado!

[22] Comentário enviado por mrxrobot em 04/01/2014 - 22:41h

Execelente artigo !

[23] Comentário enviado por Buckminster em 05/01/2014 - 21:46h


[22] Comentário enviado por marcos_warlock em 04/01/2014 - 22:41h:

Execelente artigo !


Obrigado!

[24] Comentário enviado por Ghroll em 06/01/2014 - 20:47h

Post fantástico!!
A tecnologia e sua infinitas possibilidades. :)

[25] Comentário enviado por VandersonDiniz em 07/01/2014 - 15:43h

Para você, Buckminster: (y) <----- interprete como se estivesse no facebook.kkkk.

[26] Comentário enviado por albfneto em 07/01/2014 - 19:01h

Muito bom, Buck!
Seu artigo é excelente, alta qualidade, 10 e favoritado.
Obrigado por compartilhar
seu conhecimento aqui no VOL!

[27] Comentário enviado por Buckminster em 08/01/2014 - 21:17h

Ghroll e VandersonDiniz,

obrigado!

[28] Comentário enviado por Buckminster em 08/01/2014 - 21:19h

Opa, obrigado Alberto.
É sempre uma satisfação receber um elogio teu.

[29] Comentário enviado por mitz em 12/02/2014 - 23:32h

Há tempos não via alguém tão apaixonado por cargas eletricas.
Valeu pela aula, mas sinto choque quando ouço as expressões "voltagem", "amperagem" e outras do tipo.
Como está bem explicado no texto, correspondem a tensão elétrica e corrente elétrica e por aí vão...

[30] Comentário enviado por mitz em 12/02/2014 - 23:39h

[15] Comentário enviado por junior.rocha em 19/12/2013 - 11:10h: Sou leigo no assunto, então pergunto:É correto usar o termo "voltagem"?Assim como, na proporção, poderíamos utilizar: amperagem, "vatagem (W)"?-Parabéns pelo artigo!


O certo seria dizer tensão elétrica, corrente elétrica.
As expressões voltagem, amperagem e outras são termos normalmente usados por leigos ou profissionais que aprenderam fazendo, sem influência da teoria.
De qualquer forma não tira o valor do profissional de forma alguma...

Parabéns!

[31] Comentário enviado por asdf2 em 15/04/2014 - 01:33h

Um dos melhores Artigo que ja li aqui no no site, ficou perfeito, valeu demais. Foi pros favoritos

[32] Comentário enviado por JFurio em 19/05/2014 - 09:40h

Realmente muito bom !!! o que seria dos programados, desenvolvedores, arquitetos de rede, etc... se não fossem a união da física, química e a eletrônica!

[33] Comentário enviado por Buckminster em 19/06/2014 - 21:51h


[31] Comentário enviado por asdf2 em 15/04/2014 - 01:33h:

Um dos melhores Artigo que ja li aqui no no site, ficou perfeito, valeu demais. Foi pros favoritos


Obrigado.

[34] Comentário enviado por Buckminster em 19/06/2014 - 21:51h


[32] Comentário enviado por JFurio em 19/05/2014 - 09:40h:

Realmente muito bom !!! o que seria dos programados, desenvolvedores, arquitetos de rede, etc... se não fossem a união da física, química e a eletrônica!


Obrigado.

[35] Comentário enviado por JJSantos em 15/11/2014 - 22:46h

Excelente Artigo!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts