Já
vimos como o computador lida com a informação. Agora estamos prontos
para compreender a grande diferença entre as operações aritméticas
da máquina e as operações aritméticas na vida real.
Trabalhamos, em nosso cotidiano, com uma matemática de números
reais onde o ponto inicial é o zero e o infinito o limite extremo
para os valores. Assim, se somarmos o valor 3 ao valor 254, teremos
como resultado o valor 257. Podemos somar qualquer quantidade
que o resultado será sempre um valor maior que os dois valores
envolvidos na soma.
No mundo do processador, os valores são manipulados como inteiros,
com limites bem definidos. Por exemplo, vimos anteriormente (bits
e bytes) que oito bits podem representar até 256
situações diferentes. Assim, assumimos que oito bits podem indicar
valores de 0 a 255. Considere
que 0 é um valor como outro qualquer.
Se somarmos o valor 3 ao valor 254, numa operação de oito bits,
qual será o resultado? Lembre-se: a faixa válida para valores
em oito bits vai do 0 ao 255.
A resposta certa é 1. Se não "captou" o mecanismo, pense no seguinte:
ao "estourar" a faixa de valores para oito bits, o correto seria
usar um nono bit e recomeçar a contagem do zero novamente. Mas,
como não existe esse nono bit, então o valor volta a ser menor.
Acontece a mesma coisa numa subtração, pois não existem números
negativos para o computador. Assim, subtraindo 3 de 1 o resultado
será 254. Ainda está parecendo coisa de doido, não é mesmo?
Na verdade, o processador não perde o bit extra que apareceu na
operação. Ele sinaliza a sua existência numa flag binária chamada
"carry". Se o carry, depois de uma operação, apresentar o valor
1, então houve "estouro", tanto para soma, quanto para subtração.
O carry funciona como o nosso conhecido "vai um" nas contas que
aprendemos na escola primária.
Essa característica de limites está presente sempre, independente
do tipo e poder do computador. A tabela a seguir ilustra as principais
faixas numéricas com as quais lidamos.
8
bits de 0 a 255;
16 bits de 0 a 65.535;
32 bits de 0 a 4.294.967.295
Resumindo:
bit = 0 ou 1;
nible = 4 bits;
byte = 8 bits;
kbyte = kilobyte ou 1024 bytes;
mbyte = megabyte ou 1024 kbytes ou 1.048.576 bytes;
gbyte = gigabyte ou 1024 mbytes
decimal binário hexadecimal
0 = 0 = 0
1 = 1 = 1
2 = 10 = 2
9 = 1001 = 9
10 = 1011 = A
11 = 1100 = B
15 = 1111 = F
16 = 10000 = 10
17 = 10001 = 11
31 = 11111 = 1F
32 = 100000 = 20
255 = 11111111 = FF
|