Como funcionam os bits e os bytes
por Marshall Brain - traduzido por HowStuffWorks Brasil
Neste artigo
Introdução
bits e bytes | |||
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:
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
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
0 = 0000000000000000
1 = 0000000000000001
2 = 0000000000000010
...
65534 = 1111111111111110
65535 = 1111111111111111
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 :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
010 + 111 --- 1001
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.
Portas simples
Há três, cinco ou sete portas simples que precisamos conhecer, dependendo de como se queira contá-las (logo veremos o motivo). Com elas, podem-se construir combinações que implementarão qualquer componente digital imaginável. Essas portas parecerão um pouco limitadas e incrivelmente simples, mas veremos algumas combinações interessantes nas seções seguintes que as tornarão bem mais inspiradoras. Se você ainda não leu Como funcionam os bits e os bytes, será útil fazê-lo antes de continuar. A porta mais simples chama-se "inversor", ou porta NOT. Ela usa um bit como entrada e produz seu oposto como saída. Segue abaixo, a tabela lógica para a porta NOT e seu símbolo comummente usado em diagramas de circuitos:
|
A porta AND executa uma operação lógica "e" sobre duas entradas, A e B:
|
|
|
|
|
|
|
Somadores simples
No artigo sobre bits e bytes, você conheceu a adição binária. Nesta seção, você verá como podemos criar um circuito capaz de executar a adição binária com o uso das portas descritas na seção anterior. Comecemos com um somador de um único bit. Digamos que, em um dado projeto, seja necessária a adição de bits para que se obtenha uma resposta. Começamos a projetar o circuito verificando todas as combinações lógicas. Podemos fazer isso a partir das quatro seguintes somas:0 | 0 | 1 | 1 |
+ 0 | + 1 | + 0 | + 1 |
0 | 1 | 1 | 10 |
0 | 0 | 1 | 1 |
+ 0 | + 1 | + 0 | + 1 |
00 | 01 | 01 | 10 |
|
E se quisermos somar dois bytes de 8 bits? Aí fica um pouco mais complicado. A solução mais simples é modularizar o problema em componentes reutilizáveis e replicar os componentes. Nesse caso, é necessária a criação de apenas um componente: um somador binário completo.
A diferença entre um somador completo e o somador que vimos anteriormente é que o somador completo aceita uma entrada A e uma B junto com uma entrada carry-in (CI - "vem um"). Com um somador completo, poderemos enfileirar oito deles para criar um somadorda largura de um byte e deixar transitar o bit de transporte, em cascata, de um somador para o próximo.
A tabela lógica para um somador completo é um pouco mais complicada do que as tabelas que usamos antes, porque agora temos 3 bits de entrada. Fica assim:
|
Agora, temos uma peça funcional chamada "somador completo". Um engenheiro de computação, então, desenvolve uma "caixa preta", para que os dados fiquem registrados e ele possa deixar de se preocupar com os detalhes do componente. Uma caixa preta para um somador completo seria assim:
O somador de 4 bits que acabou de ser criado é chamado de somador com propagação do carry (ripple-carry adder). Ele tem esse nome porque os bits de transporte "propagam" de um somador até o próximo. Essa execução é vantajosa por sua simplicidade, mas inconveniente pelos problemas de velocidade. Em um circuito real, as portas levam tempo para mudarem de estado (uma questão de nanossegundos, mas, em computadores de alta velocidade, nanossegundos são significativos). Assim, somadores com propagação do carry de 32 ou 64 bits devem levar de 100 a 200 nanossegundos para terminar sua soma final por causa da propagação do carry . Por esse motivo, os engenheiros criaram somadores mais avançados chamados somadores com carry antecipado (carry-lookahead adders). O número de portas necessárias para implementar o somador com carry antecipado é grande, mas seu tempo para terminar a soma é muito menor.
Flip-flops
Uma das coisas mais interessantes que podemos fazer com portas booleanas é criar memória. Se as portas forem dispostas corretamente, elas vão se lembrar do valor de entrada. Este conceito simples é a base da RAM (memória de acesso randômico) dos computadores, e também possibilita a criação de uma ampla variedade de circuitos úteis. A memória é baseada em um conceito chamado realimentação (feedback), o que significa que o valor de saída de uma porta retorna à sua entrada. O mais simples circuito com realimentação com o uso de dois inversores está exemplificado abaixo:Em circuitos "reais", o uso dessa abordagem simples de realimentação do inversor é perfeitamente possível. Um circuito com realimentação de mais utilidade com o uso de duas portas NAND está exemplificado abaixo:
R | S | Q | Q' |
0 | 0 | Inválida | |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 1 | Retém |
- se R e S tiverem valores opostos, Q acompanha S e Q' é o inverso de Q;
- se tanto R quanto S recebem valor 1 simultaneamente, então o circuito retém o que foi apresentado anteriormente em R e S.
Um flip-flop bastante comum é o flip-flop J-K. Não está claro de onde veio o nome "J-K", mas ele costuma ser representado em um quadro como este:
P | C | Clk | J | K | Q | Q' | |
1 | 1 | 1-para-0 | 1 | 0 | 1 | 0 | |
1 | 1 | 1-para-0 | 0 | 1 | 0 | 1 | |
1 | 1 | 1-para-0 | 1 | 1 | Alterna | ||
1 | 0 | X | X | X | 0 | 1 | |
0 | 1 | X | X | X | 1 | 0 |
Agora, você deve estar se perguntando: "e para que serve isso?". Na verdade, o conceito de "disparo por borda" é muito útil. O fato de o flip-flop J-K apenas "armazenar" (latching) as entradas J-K em uma transição de 1 para 0 faz com que ele seja muito mais útil como dispositivo de memória. Os flip-flops J-K também são bastante úteis em contadores (muito usados na criação de relógios digitais). Aqui está o exemplo de um contador de 4 bits usando flip-flops J-K:
Outro uso do flip-flop J-K é na criação de um latch disparado por borda, conforme abaixo:
Implementação de portas
Nas seções anteriores, vimos que, com o uso de portas booleanas simples, podemos implementar somadores, contadores, latches e assim por diante. É um avanço e tanto pois, até pouco tempo atrás, só os seres humanos sabiam somar dois números. Sem muito trabalho, é possível projetar circuitos Booleanos que implementem subtração, multiplicação, divisão... veja que estamos próximos de uma calculadora de bolso. A partir dela, não é longo o caminho até as CPUs usadas nos computadores. E como implementar essas portas na vida real? O Sr. Boole as concebeu no papel e no papel elas parecem ótimas. No entanto, precisamos implementá-las fisicamente para que as portas possam executar sua lógica efetivamente. Feita a transição, teremos nos lançado à criação de verdadeiros dispositivos computacionais.O modo mais simples de se entender a execução física da lógica booleana é com o uso de relés. Essa é a forma pela qual foram implementados os primeiros computadores. Atualmente, os relés foram substituídos pelos sub-microscópicos transistores criados em chips de silício. Esses transistores são incrivelmente pequenos e rápidos, e consomem bem pouca energia se comparados a um relé. No entanto, os relés são incrivelmente fáceis de se entender, e podem implementar lógica booleana de forma muito simples. Por causa dessa simplicidade, você será capaz de ver que o mapeamento, desde as "portas na teoria" até "ativar portas implementadas em realidade física", é algo possível e simples. Realizar o mesmo mapeamento com transistores é tão fácil quanto.
Vamos começar com um inversor. É fácil implementar uma porta NOT com um relé: iremos usar voltagens que representam estados de bit. Atribuímos ao binário 1 o valor de 6 volts, e ao binário 0 o valor de zero volts (terra). Usamos uma bateria de 6 volts para prover os circuitos de energia. A porta NOT, portanto, terá a seguinte aparência:
Neste circuito, você verá que, se atribuirmos zero volts a A, Q receberá 6 volts; e se atribuirmos 6 volts a A, Q receberá zero volts. É muito fácil de se implementar um inversor com um relé.
Também é fácil implementar uma porta AND com dois relés:
Partindo desse axioma, é possível criar três portas básicas: E, OU ou NÃO (são mais comuns os seus equivalentes em inglês: AND, OR e NOT), a partir dos relés. Podemos juntar estas portas físicas usando os diagramas lógicos acima para criar um somador físico de 8 bits (ripple-carry adder). Se usarmos chaves simples (interruptores) para aplicar entradas A e B ao somador e juntarmos todas as oito linhas Q a lâmpadas, poderemos somar quaisquer dois números e ler os resultados nas lâmpadas ("acesas" = 1, "apagadas" = 0).
A lógica booleana sob a forma de portas simples é bastante direta. A partir delas, criam-se funções mais complexas, como a soma. A implementação física dessas portas é fácil e possível. Desses três fatores, obtemos o coração da revolução digital e podemos entender, em profundidade, como funcionam os computadores.
Mais informações
Artigos relacionados- Como funcionam as portas eletrônicas
- Como funcionam os bits e os bytes
- Como funcionam os microprocessadores
- Como funciona o relé
Como funcionam os CDs
por Marshall Brain - traduzido por HowStuffWorks Brasil
Neste artigo
1.
Introdução
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Introdução
CDs | |||
Leia mais em VEJA.com
Entendendo o CD: material
Um CD é um pedaço de plástico bastante simples, com cerca de 1,2 mm de espessura. A maior parte de um CD consiste de uma peça de plástico de policarbonato transparente moldada por injeção. Durante a fabricação, esse plástico é impresso com sulcos microscópicos dispostos como uma trilha de dados em espiral, contínua e extremamente longa. Vamos falar desses sulcos daqui a pouco. Assim que a peça transparente de policarbonato é formada, uma fina camada refletora de alumínio é micropulverizada sobre o disco, cobrindo os sulcos. Em seguida, uma fina camada de acrílico é pulverizada sobre o alumínio para protegê-lo. A etiqueta é então impressa sobre o acrílico. Uma seção transversal de um CD completo (fora de escala) se parece com isto:
Seção transversal de um CD
Entendendo o CD: a espiral
Os sulcos na trilha de um CD
Cada sulco alongado que compõe a trilha tem 0,5 mícron de largura, comprimento mínimo de 0,83 mícron e altura de 125 nanômetros (um nanômetro é um bilionésimo de um metro.) Olhando os sulcos através da camada de policarbonato, eles se parecem com isto:As dimensões incrivelmente pequenas dos sulcos formam uma trilha espiral extremamente longa. Se você pudesse arrancar a trilha de dados de um CD e esticá-la em uma linha reta, ela teria 0,5 mícron de largura e quase 5 quilômetros de comprimento!
Para ler algo assim tão pequeno você precisa de um mecanismo de leitura de disco extremamente preciso. Vamos dar uma olhada nisso.
veja mais aqui..isto é o restante:
.
6.
7.
8.
9.
10.
11.
Nenhum comentário:
Postar um comentário