Página 1 de 1

Bits e Bytes... O que são?

Enviado: Qui Abr 28, 2016 8:38 pm
por Tutoriais & Aulas
Autor original: BrendanLS
Se você não esteve morando em outro planeta por pelo menos uns 50 anos, você provavelmente sabe que nosso PC só “entende” duas coisas: 0 e 1. Mas se você realmente esteve nessa situação, não se desespere. Hoje em dia a gente tem o Google pra você.

Toda informação presente dentro do nosso computador é composta por zeros (0) e uns (1). Seus arquivos são 0s e 1s, seus joguinhos são 0s e 1s, aquelas fotos de lindas mulheres peladas que você está escondendo da sua irmã e acha que eu não sei também são louváveis 0s e 1s. Este texto que você está lendo... Adivinha! É isso mesmo. 0s e 1s. Palavras nada mais são do que bytes (valores) alinhados na memória.

Todos os dados interpretados por nosso computador estão nesse formato de “zeros e uns” que chamamos de binário. Mas afinal de contas, o que significam esses dois números? E quanta informação a gente poderia gerar com eles? Hoje, de uma vez por todas, nós vamos resolver esse problema que você sempre teve medo. Não é o medo de sua irmã encontrar as fotos não... É do Sistema Binário mesmo.

Boa leitura!
O Bit Mágico
Desde criança, aprendemos a contar usando dez unidades (Sistema Numérico Decimal), portanto, escrevemos usando dez números (de 0 a 9). Quando queremos escrever algum valor maior que 9, primeiro nós escrevemos quantas dezenas cabem nele e logo em seguida quantas unidades. Dessa forma, o algarismo “29”, por exemplo, representa “2 x 10 9”. Quando lidamos com números ainda maiores, escrevemos as centenas, os milhares e assim por diante. O que foi consolidado em nossas mentes é a presença muito forte do valor 10, já que as centenas nada mais são do que 10 multiplicado por ele mesmo duas vezes.

Dizem que contamos assim por que nossos ancestrais remotos usavam os dedos das mãos para contar. Por isso, eles contavam 2 x 5 = 10 dedos. Quando contamos dez coisas e usamos todos os dedos, fazemos uma marca para indicar uma seqüência completa e começamos a contagem novamente. Deste modo, contar em potências de dez (o que parece estranho quando explicado assim) torna-se perfeitamente natural.


O fato é que o nosso computador só tem um “dedo” para contar e é daí que vem o nome digital. Esse “dedo” do computador, na realidade, é uma voltagem que é interpretada pelo processador como um valor. A corrente elétrica é que faz o papel de dedo pra ele poder contar. O valor 0 é representado por nenhuma voltagem e o valor 1 é uma voltagem fixada em 5V. Tão bem quanto nossos dez dedos, o computador usa o “dedo elétrico” dele pra contar e realizar cálculos simples.

Isso significa que ele também pode realizar cálculos complicados, visto que qualquer operação aritmética pode ser feita por simples adição e subtração. O segredo da aparente “inteligência” do computador está na velocidade com que ele realiza esses cálculos usando seu “dedo elétrico”... Digamos, algo entorno de dois bilhões de vezes por segundo! Com uma velocidade assim tão grande, fica fácil processar cálculos científicos dos mais complicados. Não se espante: já estamos codificando até mesmo o DNA humano.

Esse rapidíssimo impulso elétrico é tudo o que nosso processador realmente entende. No sistema binário, ele é representado por 0 ou 1 e é chamado de bit. Um bit é a menor unidade de informação possível. A palavra bit é uma abreviação do termo “Binary Digit”.

Voltando ao sistema binário... Um fato importante é que a quantidade real de um valor não muda quando usamos outro sistema numérico. 20 reais (dindim, cacau, bufunfa) no sistema decimal ainda são os mesmos 20 reais no sistema binário ou em qualquer outro. O que muda na realidade é sua representação dentro do sistema. No sistema decimal temos dez números para representar qualquer valor (0 a 9) e no sistema binário temos apenas dois números (0 e 1). Da mesma forma que fazemos no sistema decimal, podemos representar qualquer quantidade ou valor no sistema binário.

O computador só tem um dedo pra contar, portanto só podemos usar 0 ou 1. Apesar de usar apenas dois números, as regras para contar em binário são as mesmas. 0 é 0 e 1 é 1. Como já usamos todos os dedos do computador precisamos reiniciar outra vez. Então 10 será 2 e 11 será 3. Chegamos a mesma situação no número 4: vamos reiniciar a contagem, portanto 100 será 4, 101 será 5 e assim por diante...
Binário Decimal
0 0
1 1
10 2
11 3
100 4
101 5
110 6
111 7
1000 8
1001 9
Até aí tudo bem... Mas e quanto à capacidade do computador em lidar com textos e nomes?

Bom... Não há dificuldade em gravar textos na memória dele, pois nós já vimos que ele pode “pensar” que 111 significa 7. Naturalmente, ele não pensa nada. O computador não se importa com o que esse 111 significa pra nós. Dessa forma, nós podemos facilmente codificar as letras do alfabeto usando apenas 0 e 1. Em binário, poderíamos ordenar a ele que “pense” que 0 corresponde ao caractere A, 1 corresponde ao caractere B, 10 corresponde ao C, 11 corresponde ao D, e assim por diante...

O fato é que, hoje em dia, todos os idiomas do mundo já foram codificados em um sistema universal chamado Unicode. Além do Unicode, também temos o sistema americano ASCII que significa “American Standard Code for Information Interchange”. Em subserviência ao colonialismo tecnológico americano, o sistema ASCII é o mais comum. Dá uma olhada nessas letras da tabela abaixo e seus valores ASCII. Do lado direito dá pra gente ver como é que nosso computador “entende” as letras do alfabeto. Pra ele, 1000001 (quando lidamos com texto) significa a letra A.
Letra Valor na tabela ASCII Binário
A 65 100001
B 66 100010
C 67 100011
D 68 100100
E 69 100101
F 70 100110
G 71 100111
Naturalmente, pra nós seres humanos, o sistema binário pode ser um pouco complicado de assimilar visualmente já que estamos acostumados com o sistema decimal. Mas pra nossa conveniência, o nosso computador também sabe contar em Hexadecimal, onde a contagem reinicia no número 16. Nesse sistema, o nosso computador conta 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Tão bem quanto o sistema binário, ele conta e faz cálculos em hexadecimal também.

Posteriormente vou explicar porque usamos o hexadecimal ao invés do binário. Por enquanto, vamos nos manter no sistema binário e entender um pouco mais sobre os bits. Em primeiro lugar, vamos começar enxergando o sistema binário como uma ferramenta útil ao invés de um bicho de sete cabeças. Nós já sabemos que um bit é a menor unidade de informação possível, certo? Um bit pode ser 0 ou 1. Vamos encarar isso como um sim (1) ou não (0) para responder a alguma pergunta.

Vamos supor que você esteja agora em uma ilha deserta [strike]sozinho com a Ana Hickman[/strike] sem nenhum tipo de comunicação. A primeira coisa a se fazer é manter a calma, afinal nada na vida exceto um monte de coisas é essencial. A uns 20 quilômetros da ilha, há um barco onde todos os tripulantes estão assistindo a uma partida de futebol entre Brasil e Argentina. Certo momento, um dos tripulantes solta um rojão (não é peido não. É desses de festa junina mesmo) comemorando a vitória de uma das equipes. Supondo que a costa seja brasileira e os tripulantes do barco estão torcendo para o Brasil, você agora sabe que:
  • Você está com fome.
  • Você está com sede.
  • Você provavelmente vai morrer se não conseguir ajuda.
  • QUE SE DANE! O BRASIL GANHOU DA ARGENTINA!!!
O que aconteceu foi que aquele torcedor sinalizou sim (1) ou não (0). Seria o mesmo se disséssemos a ele: “Se o Brasil vencer o jogo, solte o rojão, caso contrário não faça nada.” Podemos dizer que aquele torcedor sinalizou 1bit de informação. Mas e se ao invés de uma partida de futebol houvesse uma corrida entre 8 carros? Como seria? Digamos que o capitão peça ao marinheiro para sinalizar um número de rojões referente ao número do carro que vencer a corrida. Se o carro número 4 vencer a corrida, o marinheiro deverá disparar 4 rojões. Se o carro número 8 vencer a corrida, 8 rojões. Mas esse seria o melhor método? Vejamos...

Encarando um bit como uma dupla resposta para uma pergunta, poderíamos fazer o seguinte... Vamos dizer ao marinheiro que sinalize 1 caso o vencedor esteja entre a primeira metade do total de competidores (entre os números 1 e 4) e caso contrário, sinalize 0. Passado certo tempo e vendo que o marinheiro não disparou o rojão, agora sabemos que o vencedor está entre os números 5 e 8.

Agora, vamos pedir a ele que sinalize 1 caso o vencedor seja um dos números 5 ou 6. Se o vencedor for um dos números 7 ou 8 ele deverá sinalizar 0. Supondo que ele não dispare o rojão, agora sabemos que o vencedor está entre os números 7 e 8. O próximo passo é sinalizar 1 para o número 7 e 0 para o número 8. Ele sinalizou 0 e agora nós sabemos que o vencedor da corrida foi o carro de número 8. Para nos dizer quem foi o campeão entre 8 carros, o marinheiro usou apenas 3 rojões (ao invés de 8, como no primeiro exemplo). Podemos dizer que ele usou 3 bits de informação.

O sistema ASCII padrão, faz uso de 7 bits para representar os caracteres utilizados no inglês norte americano. Cada bit pode ser 0 ou 1, portanto 2 possibilidades. Como cada bit equivale a “uma dupla resposta para uma pergunta”, 7 bits equivalem a 2 elevado à sétima potência, ou seja, (2 x 2 x 2 x 2 x 2 x 2 x 2), o que nos dá 128 combinações possíveis. Isso quer dizer que com apenas 7 bits de informação podemos representar 128 símbolos, incluindo números, letras e caracteres especiais. Com 8 bits, poderíamos sinalizar o campeão de uma corrida entre 256 carros! Você poderia imaginar que precisaria de muito mais rojões que isso, não é?

Se ao invés do sistema decimal, contássemos somente até o número 7, precisaríamos de apenas 3 bits para representar os números de 0 a 7 (octal, 8 números), mas para representar o 8 e o 9 precisamos de um bit extra (4 bits), o que é irritante, visto que 4 bits representar até o 15. É por isso que existe o hexadecimal. Apenas para usar 4 bits com eficiência. Há vários anos atrás, os projetistas das primeiras máquinas computacionais se fixaram num padrão de 8 bits porque ele provavelmente poderá conter todos os símbolos de um teclado que se possa necessitar.
Um conjunto de 8 bits é chamado de byte. Um byte, como já vimos, pode representar de 0 a 255, ou seja, 256 combinações possíveis.
Por enquanto acho que é tudo. Nos próximos tutoriais (parte 2 e 3), vamos começar a brincar pra valer com bits e bytes usando o Game Maker. Vamos criar desde simples métodos de salvamento de partidas até sistemas mais complexos para criação de arquivos. Vamos aprender de verdade como criar um arquivo com conteúdo próprio e aprender a ler cabeçalhos de arquivos usando o Game Maker. A extensão de arquivo nada mais é que um indicativo, pois o que manda realmente é o cabeçalho.

Como eu sou fã de Mugen já há um tempão, fiz um conversor de arquivos SFF para Strips usando o Delphi e o Game Maker (devido à facilidade de se trabalhar com surfaces). Inclusive, isso nos rendeu nada menos que cerca de 5000 Strips de lutadores completos, que incluí no pacote de recursos que estou criando pra galera fazer download. Vamos aprender a fazer isso usando as funções de leitura de bytes no GM (que é muito fácil), e a ler/criar paletas ACT (e até PAL) tanto para o Mugen quanto para o Photoshop. É isso aí moçada! Espero que tenham gostado do tutorial. Boa sorte e um abraço!
BrendanLS (Capitão Commando)