Atenção Já Já Mais Atualizações!

segunda-feira, 7 de setembro de 2009

Como funcionam os bits e os bytes

Introdução
Se você já usou um computador por mais de cinco minutos, provavelmente ouviu as palavras bits e bytes. A capacidade da memória RAM e do disco rígido, assim como o tamanho dos arquivos são medidos em bytes, quando examinamos em um visualizador de arquivos.
Você pode ouvir um comercial que diga: "este computador possui um processador Pentium de 32 bits com 64 megabytes de memória RAM e 2,1 gigabytes de espaço no disco rígido". E muitos artigos de HowStuffWorks falam dos bytes (por exemplo, Como funcionam os CDs). Neste artigo, discutiremos bits e bytes para que você possa obter um entendimento completo do assunto.
Números decimais. A maneira mais fácil de se compreender os bits é compará-los a algo que você já conhece: os dígitos. Um dígito é um local que pode conter valores numéricos entre 0 e 9. Dígitos normalmente são combinados em grupos para criar números maiores. Por exemplo, 6.357 possui quatro dígitos. Sabe-se que, no número 6.357, o 7 ocupa a posição de unidade, enquanto o 5 ocupa a posição de dezena, o 3 ocupa a posição de centena e o 6 ocupa a posição de milhar. Assim, caso queira ser explícito, poderá expressar esse número da seguinte maneira:
(6 * 1000) + (3 * 100) + (5 * 10) + (7 * 1) = 6000 + 300 + 50 + 7 = 6357
Uma outra maneira de expressá-lo seria utilizando potências de 10. Suponhamos que o conceito de "elevado à potência de" seja representado pelo símbolo "^" ("10 ao quadrado" seria escrito como "10^2"). Assim uma outra maneira de expressar esse número é:
(6 * 10^3) + (3 * 10^2) + (5 * 10^1) + (7 * 10^0) = 6000 + 300 + 50 + 7 = 6357
O que se pode perceber nessa expressão é que cada dígito é um marcador de posição para a próxima potência de 10, começando no primeiro dígito com 10 elevado à potência de zero.
Isso deve ser considerado cômodo, já que trabalhamos com dígitos decimais todos os dias. Mas o interessante sobre sistemas numéricos é que não existe nada que o force a ter 10 valores diferentes em um dígito. Nosso sistema decimal provavelmente se desenvolveu porque possuímos 10 dedos - caso viéssemos a evoluir para apenas oito, poderíamos ter um sistema baseado na mesma quantidade de dígitos. Você pode criar sistemas baseados em qualquer quantidade de dígitos. Na verdade, existem várias boas razões para utilizar diferentes bases em diferentes situações.
Bits
Os computadores operam utilizando o sistema numérico baseado em 2 dígitos, também conhecido como sistema numérico binário, assim como o sistema numérico baseado em 10 dígitos é conhecido como sistema numérico decimal. A razão pela qual os computadores utilizam o sistema baseado em 2 dígitos é que isso torna muito mais fácil implementá-los com a tecnologia eletrônica atual. É possível conectar e montar computadores que operam na base de 10 dígitos, mas eles seriam extremamente caros. Por outro lado, os computadores binários são relativamente baratos.
Por isso os computadores usam números binários e, conseqüentemente, dígitos binários no lugar de dígitos decimais. A palavra bit é a abreviação das palavras "Binary digIT" (dígito binário). Enquanto os dígitos decimais possuem 10 valores possíveis, que vão de 0 a 9, os bits possuem apenas dois: 0 e 1. Portanto, um número binário é composto apenas de 0s e 1s, como por exemplo: 1011. De que maneira se descobre qual é o valor do número binário 1011? Você o faz da mesma forma que fizemos anteriormente para 6357, mas utilizará a base de 2 dígitos ao invés de 10. Assim:
(1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (1 * 2^0) = 8 + 0 + 2 + 1 = 11
Você pode observar que em números binários cada bit comporta o valor das potências crescentes de 2. Isso torna a contagem em binários consideravelmente fácil. Contando em decimais e binários, começando em zero e indo até 20, fica assim:
0 = 0
1 = 1
2 = 10
3 = 11
4 = 100
5 = 101
6 = 110
7 = 111
8 = 1000
9 = 1001
10 = 1010
11 = 1011
12 = 1100
13 = 1101
14 = 1110
15 = 1111
16 = 10000
17 = 10001
18 = 10010
19 = 10011
20 = 10100
Observando essa seqüência, você percebe que 0 e 1 são os mesmos para os sistemas numéricos decimal e binário. No número 2, no entanto, observa a primeira repetição no sistema binário. Se um bit é 1, e você soma 1 a ele, o bit torna-se 0 e o próximo torna-se 1. Na transição de 15 para 16 esse efeito passa por 4 bits, transformando 1111 em 10000.
Bytes
Os bits dificilmente estão sozinhos nos computadores. Normalmente são agrupados em conjuntos de 8 bits, chamados bytes. Por que existem 8 bits em um byte? Seria o mesmo que perguntar: "por que há 12 ovos em uma dúzia". O byte de 8 bits é algo que as pessoas estabeleceram através de tentativas e erros durante os últimos 50 anos.
Com 8 bits em um byte é possível representar 256 valores, de 0 a 255, como mostrado abaixo:
0 = 00000000
1 = 00000001
2 = 00000010
...
254 = 11111110
255 = 11111111
No artigo Como funcionam os CDs, você aprende que um CD utiliza 2 bytes, ou 16 bits, por amostragem. Isso dá a cada amostragem uma gama de 0 a 65.535, assim:
0 = 0000000000000000
1 = 0000000000000001
2 = 0000000000000010
...
65534 = 1111111111111110
65535 = 1111111111111111
Bytes: o padrão ASCII
Os bytes são freqüentemente utilizados para comportar caracteres individuais em um documento de texto. No sistema de caracteres ASCII, cada valor binário entre 0 e 127 está associado a um caractere específico. A maioria dos computadores estende o sistema ASCII, para utilizar a gama completa dos 256 caracteres disponíveis em um byte. Os últimos 128 caracteres comportam elementos especiais, como caracteres acentuados de diversas línguas como o português.
Você pode ver os 127 códigos padrão da tabela ASCII, abaixo. Computadores armazenam documentos de texto, tanto no disco quanto na memória, utilizando esses códigos. Se você utiliza o Bloco de Notas do Windows 95/98 para criar um arquivo de texto contendo as palavras "Four score and seven years ago" (quatro pontos e sete anos atrás), o Bloco de Notas usaria 1 byte de memória por caractere (incluindo 1 byte para cada espaço entre as palavras, caractere 32 da tabela ASCII). Quando o Bloco de Notas armazena a sentença em um arquivo no disco, o arquivo também irá conter 1 byte por caractere e por espaço.
Faça esse experimento: abra um novo arquivo no Bloco de Notas e insira a frase "Four score and seven years ago". Salve o arquivo no disco com o nome de getty.txt. Utilize então o Explorer e veja o tamanho do arquivo. Você irá descobrir que o arquivo ocupa um espaço de 30 bytes no disco: 1 byte para cada caractere. Se você adicionar outra palavra ao final da sentença e salvar novamente, o tamanho do arquivo irá subir para o número referente de bytes. Cada caractere consome um byte.
Se você olhasse para um arquivo como um computador o faz, veria que cada byte contém um número, não uma letra; o número é o código ASCII que corresponde ao caractere (veja abaixo). Desse modo, os números para o arquivo no disco são:
F o u r a n d s e v e n
70 111 117 114 32 97 110 100 32 115 101 118 101 111
Olhando a tabela ASCII, você pode observar uma correspondência entre cada caractere e o código ASCII utilizado. Observe o uso do 32 para espaço - 32 é o código ASCII para espaço. Poderíamos expandir esses números decimais para números binários (assim, 32=00100000), se quiséssemos ser tecnicamente corretos. Na realidade, é assim que o computador lida com as coisas.
Tabela ASCII padrão
Os 32 primeiros valores (0 até 31) são códigos para itens como o retorno para o início de uma linha (CR - Carriage Return) e o avanço de linha (LF - Line Feed). O caractere de espaço é o 33º valor, seguido de caracteres de pontuação, dígitos, caracteres maiúsculos e caracteres minúsculos.
0 NUL
1 SOH
2 STX
3 ETX
4 EOT
5 ENQ
6 ACK
7 BEL
8 BS
9 TAB
10 LF
11 VT
12 FF
13 CR
14 SO
15 SI
16 DLE
17 DC1
18 DC2
19 DC3
20 DC4
21 NAK
22 SYN
23 ETB
24 CAN
25 EM
26 SUB
27 ESC
28 FS
29 GS
30 RS
31 US
32
33 !
34 "
35 #
36 $
37 %
38 &
39 '
40 (
41 )
42 *
43 +
44 ,
45 -
46 .
47 /
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
58 :
59 ;
60 < 61 =
62 >
63 ?
64 @
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92
93 ]
94 ^
95 _
96 `
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j
107 k
108 l
109 m
110 n
111 o
112 p
113 q
114 r
115 s
116 t
117 u
118 v
119 w
120 x
121 y
122 z
123 {
124 |
125 }
126 ~
127 DEL
Muitos bytes
Quando se fala em uma grande quantidade de bytes, utilizamos prefixos como kilo, mega e giga, para criar outros termos: kilobyte, megabyte e gigabyte (também abreviados para K, M e G, como em Kbytes, Mbytes e Gbytes ou KB, MB e GB). A tabela a seguir mostra os multiplicadores binários :
Nome
Abrev.
Tamanho
Kilo
K
210 = 1.024
Mega
M
220 = 1.048.576
Giga
G
230 = 1.073.741.824
Tera
T
240 = 1.099.511.627.776
Peta
P
250 = 1.125.899.906.842.624
Exa
E
260 = 1.152.921.504.606.846.976
Zetta
Z
270 = 1.180.591.620.717.411.303.424
Yotta
Y
280 = 1.208.925.819.614.629.174.706.176
Você pode perceber, através desse quadro, que kilo corresponde a aproximadamente mil; mega, cerca de um milhão; giga, um bilhão e assim por diante. Quando alguém diz: "este computador tem um disco rígido de 2 giga", o que está querendo dizer é que o disco rígido pode armazenar 2 gigabytes, aproximadamente 2 bilhões de bytes ou exatamente 2.147.483.648 bytes. Como seria possível você precisar de 2 gigabytes de espaço? Se você considerar que um CD armazena 650 megabytes, perceberá que o equivalente a apenas três CDs de dados ocuparia o disco rígido inteiro! Bases de dados de terabyte são comuns nos dias de hoje e, provavelmente, já devem haver algumas bases de petabyte sendo utilizadas pelo Pentágono (em inglês).
Aritmética binária
A aritmética binária funciona exatamente como a aritmética decimal, exceto pelo fato de que o valor de cada bit pode ser apenas 0 ou 1. Para perceber um pouco da aritmética binária, vamos começar com uma adição decimal e ver como funciona. Suponha-se que queiramos somar 452 e 751:
452
+ 751
---
1203
Para somar esses números, você começa pela direita: 2 + 1 = 3. Sem problemas. A seguir, 5 + 5 = 10, conserva o zero e transporta o 1 à próxima soma ("vai um"). A seguir, 4 + 7 + 1 (devido ao vai um) = 12, então, mantém o 2 e transporta o 1. Por fim, 0 + 0 + 1 = 1. A resposta então é 1203.
A adição binária funciona exatamente da mesma maneira:
010
+ 111
---
1001
Começando pela direita, 0 + 1 = 1 para o primeiro dígito. Não existe vai um. Você tem 1 + 1 = 10 para o segundo dígito, então, mantém o 0 e transporta o 1. Para o terceiro dígito, 0 + 1 + 1 = 10, mantenha então o zero e transporte 1. Para o último dígito, 0 + 0 + 1 = 1. Assim, a resposta é 1001. Se você traduzir tudo para decimais, verá que está correto: 2 + 7 = 9.
Para ver como as operações booleanas são implementadas utilizando portas eletrônicas (gates), veja Como funciona a lógica booleana.
Recapitulação rápida
Para resumir este artigo inteiro, aqui está o que aprendemos sobre bits e bytes:
  • bits são dígitos binários; um bit pode conter o valor 0 ou 1;
  • bytes são feitos de 8 bits cada;
  • a aritmética binária funciona exatamente como a aritmética decimal, mas cada bit pode ter apenas o valor 0 ou 1.
Realmente não há nada além disso: os bits e bytes são muito simples.

Nenhum comentário:

Postar um comentário