08 julho 2005

Cogitar (6 cogitações anteriores)

Bits & Bytes

Bits & bytesQuem trabalha com computadores está habituado a ouvir falar de bytes. Houve-se falar de bytes quando se fala nas dimensões de um ficheiro ou do disco duro ou da memória RAM. Mas o que é exactamente um byte e como está ligado ao tamanho de um ficheiro?
Para se falar de bytes (lê-se «báites) é necessário compreender primeiro o que é um bit («bit» é a contracção da expressão inglesa BInary digiT ou seja «dígito binário»). Como já foi referido no artigo Iotas e nanos os computadores trabalham com a base binária (que tem apenas os algarismos 0 e 1). As contas com as base binária e a base decimal dão valores diferentes se bem que se possa passar de uma para a outra e obter-se os valores correctos nessa base. É assim que os computadores fazem as contas: primeiro transformam todos os números para ficarem na base binária, fazem as contas nessa base e depois passam o resultado para a base decimal.

Para se entender como funciona a base binária veja-se como funciona a base decimal. O conceito é o mesmo. Tem de se escrever o número como uma série de algarismos entre 0 e 9 a multiplicar por potências de 10.
O número 105 = 100 + 5 = 1x102 + 5x100 (nunca esquecer que qualquer número elevado a 0 é 1, excepto o próprio 0. 00 não é um valor, é um paradoxo matemático devido às propriedades únicas do 0). Assim 105 = 1x102+ 0x101 + 5x100 (Todas as potências têm de estar presentes. Se falta alguma tem de se juntar a multiplicar por 0). O número na base decimal são os algarismos que estão a multiplicar pelas potências (1 0 5).
Dígitos binários

Na base binária é a mesma coisa só que, em vez de 10, usa-se o 2. O número 1110(2) (significa que está na base binária) é 1x23+ 1 x22 + 1x21 + 0 x20 = 1x8 + 1x4 + 1x2 + 0x1 = 8 + 4 + 2 = 14(10). (Para saber que a primeira potência é 3 conta-se a partir da direita. A última é sempre 0 por isso neste caso a primeira é 3. A primeira é sempre o número de algarismos menos 1. Neste caso há 4 algarismo, 1 0 2 0, logo a primeira potência é 23)

e.g. Como faz o computador a conta 3 + 4 ?
~ Primeiro passa o 3 para a base binária. 3 = 2 + 1 = 1x21 + 1x20 = 11(2).
~ Segundo passa o 4 para a base binária. 4 = 2x2 = 22. Como todas as potências da primeira até 0 têm de existir. 4 = 1x22 + 0x21+ 0x20 = 100(2).
~ Depois faz a soma 11(2) + 100(2) = 111(2)
~ Finalmente passa o resultado para a base decimal: 111(2) = 1x22 + 1x21 + 1x20 = 1x4 + 1x2 + 2x1 = 7(10).

~ E eu que pensava que os computadores faziam contas muito rapidamente! Afinal são ainda mais rápidos do que eu pensava. Em pouco tempo fazem 4 contas diferentes! Incrível!


O número de contas que uma simples conta exige aumenta conforme quantos números se estão a somar, claro. Por cada número a mais é mais uma transformação para a base binária que se tem de fazer.

~ Está bem, mas o que tem isto a ver com bytes?

Base bináriaAo contrário dos seres humanos que têm 2 mãos com 10 dedos para usar a base decimal os computadores não têm dedos nem mãos (nem, já agora, pés...). O equivalente nos computadores aos dedos é um pequeno circuito que está ligado ou desligado.
Quando está ligado corresponde a 1, quando está desligado corresponde a zero, como se fosse uma lâmpada. Um bit é uma «lâmpada», ou seja, a informação se o algarismo é 0 («desligado») ou 1 («ligado»).
Uma sequência de bits forma um byte. Byte 110100
Neste exemplo concreto está o byte 10100, que corresponde ao número 20.
Quanto mais comprida for a cadeia de bits maior é o número de bytes diferentes que o computador reconhece. A cada byte corresponde uma letra, um número ou um símbolo. Um sistema 8-bit significa que cada byte é composto de 8 bits. Desta forma há 256 bytes diferentes, cada byte correspondendo a um carácter diferente. Este sistem 8-bit é o chamado código ASCII ( American Standard Code for Information Interchange).

Cognosco em ASCII decimalCada número de 0 a 256 corresponde a um símbolo. O computador trabalha e guarda esses dítos na forma binária. A tabela ASCII é dada na base decimal para ser mais fácil de usar por nós mas os computadores transformam essa informação para base binária. Assim, quando um computador está a guardar um documento de texto começa por transformar cada letra, cada espaço, cada pontuação, cada algarismo num número binário de acordo com a tabela ASCII. Guarda depois esses valores na forma de bytes na sua memória («no local da sua memória acende e apaga alguns bits para formar o texto inteiro»). As letras maiúsculas têm um código ASCII diferente das minúsculas (ver no exemplo «C» e «c»), os espaços também, as vírgulas, o «enter»,...

O tamanho do ficheiro é igual ao número de bytes que ocupa na memória do computador. e.g.
~ Um disco que tivesse uma memória de 20 bytes conseguiria guardar 20 bytes ou seja 20 caracteres.

~ Um disco que tivesse uma memória de 2 megabytes conseguiria guardar 2 megabytes ou seja 1 048 576 caracteres.

(Ver o artigo Iotas e nanos sobre a razão de um megabyte não ser 1000 bytes mas sim 1 048 576 bytes).

Os números 0 e 1 são os números mais poderosos à face da Terra. Apesar de normalmente negligenciados devido ao seu pouco valor numérico foram os algarismos que revolucionaram o Mundo através dos computadores!
Cogitado por Mauro Maia às 15:31 | Cogitar (6)
Cogitações anteriores
Este artigo está com uma formatação estranha. Formatei o artigo correctamente mas o blog ignora a formatação quando mostra o artigo. Tive de recorrer à formatação URL para que aparecessem os parágrafos. Mesmo assim não está grande coisa (a formatação) mas foi o melhor que neste momento foi possível (inicialmente nem sequer mostrava parágrafos. O artigo era apresentado como uma sequência ininterrupta de letras e imagens de aspecto nada agradável e extremamente difíl de seguir) Cogitado por: Mauro a julho 8, 2005 07:17 PM
Constato agradada que este blog ressuscitou! O que aconteceu? Cogitado por: Rata Zinger a julho 8, 2005 07:39 PM
No artigo «He's alive!» do dia 5 de Julho está tudo explicado. Não foi intencional nem alguma vez colocarei a possibilidade de extinção do Cognosco. Para isso já basta o lince ibérico da Serra da Malcata... ;) Cogitado por: Mauro a julho 8, 2005 09:46 PM
credo!!! eu não digo que estás perdido?!?! primeiro as octanas, agora os bit e os byte, ó genti!!! calma aí que ainda ficamos cultos!! :P Cogitado por: maresia a julho 10, 2005 01:29 PM
Apenas uma nota relativamente à frase: (não confundir com «carácter»!). É de referir que se tratam de palavras homógrafas e, portanto, se escreve sempre carácter, caracter não existe. No dicionário encontrarás as definições todas nessa mesma palavra. Cogitado por: André a janeiro 23, 2008 07:42 PM
Obrigado, «André». Fiz a verificação que aconselhaste e de facto obtive o resultado que indicas. Tinha a ideia de que assim não era. Estava enganado e já efectuei a mudança no artigo. Obrigado. Cogitado por: Mauro a janeiro 23, 2008 09:15 PM