A. Sistemas de Numeração.
Para se entender a linguagem do computador (o Código de Máquina), é necessário conhecer um pouco da
teoria dos números. Não é uma tarefa tão difícil quanto pode parecer. Sabendo-se contar até 16, não terá
qualquer dificuldade. Mas, inicialmente é preciso aprender a contar até 2.
A.1. Decimal (Base 10)
Mesmo a pessoa mais avessa à matemática não tem qualquer dificuldade para dizer as horas ou
acompanhar o resultado de uma partida de futebol. O uso dos números faz parte do dia-a-dia de tal forma que
nunca nos preocupamos com a maneira com que eles funcionam. No mundo ocidental usamos habitualmente um
sistema numérico baseado no número 10. Isto significa que começamos uma contagem usando os números de 0 a
9. Se precisarmos de uma grandeza maior do que 9, usamos os dígitos disponíveis. Assim, colocamos o 1 na “casa”
da esquerda e o 0 à sua direita (10).
Este é chamado de um sistema de numeração de base 10 ou decimal, porque o valor do dígito é
multiplicado por 10 a cada posição que se conta. Por exemplo, o número 275 corresponde ao valor calculado por 2
x 102 + 7 x 101 + 5 x 100, ou seja 200 + 70 + 5. Todo sistema que usa esse método para representar números é
chamado de posicional.
275
centena
102
2
↓
2 x 102
↓
200
+
+
dezena
101
7
↓
7 x 101
↓
70
unidade
100
5
↓
+ 5 x 100
↓
+
5
275
Tudo isso parece óbvio porque fazemos esses cálculos todos os dias, sem pensarmos muito neles.
Entretanto, existem outros sistemas de numeração, diferentes do decimal, como por exemplo, os que são usados
nos modernos micros.
A.2. Binário (Base 2)
Para os computadores digitais, o sistema de numeração mais apropriado é o baseado no número 2. Isso
acontece porque o computador é composto de circuitos eletrônicos que possuem dois estados evidentes: ligado
(há corrente de energia) e desligado (não há corrente). O estado “desligado” representa o número 0, e o
“ligado”, o número 1. E, na base 2, estes são todos os dígitos de que se necessita para expressar qualquer valor.
O sistema binário é composto apenas por zeros e uns; todos os outros dígitos foram abolidos. Dessa
forma, se se começar a contar da maneira habitual, não vai passar de 1. Some 12 a 12 e terá o número 1
deslocado uma casa para a esquerda, enquanto a casa da direita é zerada. Assim, em binário, 12 + 12 = 102.
Contar de 0 a 15, em decimal, resulta em (não adianta tentar decorar...):
DECIMAL
0
1
2
3
4
5
6
7
BINÁRIO
0000
0001
0010
0011
0100
0101
0110
0111
DECIMAL
8
9
10
11
12
13
14
15
BINÁRIO
1000
1001
1010
1011
1100
1101
1110
1111
A adição de valores binários obedece a seguinte regra: 0 + 0 = 0 ; 0 + 1 = 1 ; 1 + 1 = 0, "vai 1" .
Para somar 102 + 112, deve-se primeiramente somar os dois números da direita, 0 + 1. A seguir, devem ser
somados os dois da esquerda, 1+1 o que dá 2; só que em binário é 102. Assim 102+112=1012; ou seja, em
decimal, 2+3=5.
A
A subtração em binário é um processo tão direto quanto a soma. O único detalhe a observar é o número
que se “leva” para a próxima casa.
A multiplicação e a divisão são tão fáceis que “até” um computador pode fazer essas operações. No
primeiro caso, tudo se resume a multiplicar 0 x 0 = 0 ; 0 x 1= 0 ; 1 x 1 = 1 .
A divisão é igualmente simples: em cada operação, basta decidir se o divisor está dentro do dividendo uma
vez ou nenhuma vez, ou 0 ÷ 0 = 0 ; 0 ÷ 1 = 0 ; 1 ÷ 0 = 0 ; 1 ÷ 1 = 1 .
A.3. Hexadecimal (Base 16)
Embora o sistema de numeração binário seja muito simples, pelo fato de haver muitos zeros e uns na
composição de números com oito, dezesseis ou mais dígitos binários, pode-se criar certa dificuldade na
compreensão e manipulação.
Os esforços para contornar tais problemas fez com que surgisse um sistema numérico com outra base,
mas que ainda seja semelhante, em concepção, ao sistema binário utilizado pelo computador. O sistema
universalmente adotado para isso é o hexadecimal ("hexa" para os íntimos), no qual os números utilizam a base
16. Antes de mais nada, esse sistema está suficientemente próximo do decimal para ser tolerado por nós, simples
mortais. Mas, além disso, 16 é uma potência de 2. Isso significa dizer que a conversão entre os sistemas – binário
e hexadecimal –, nos dois sentidos é extremamente simples.
A única dificuldade é que qualquer sistema com base maior do que 10 precisa de novos algarismos, além
dos costumeiros decimais (de 0 a 9). De qualquer forma, na base hexadecimal, os dígitos seriam compreendidos
entre 0 e 15 (todavia, o próprio 15 utiliza dois dígitos; por esta razão, os dígitos, entre 10 e 15 serão entendidos
como A16, B16, C16, D16, E16 e F16). Veja:
Decimal:
Hexadecimal:
0
0
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10 11 12 13 14 15
A B C D E F
Observe, portanto, que o valor máximo de um dígito hexadecimal é 15, representado pelo dígito F (não é
letra "F"!). Conhecendo-se a base binária, o valor 15 corresponde a 11112 (=8+4+2+1), portanto, cada 4 dígitos
binários correspondem a 1 dígito hexadecimal (por exemplo, o valor binário 010000012, separando-se cada 4
dígitos binários, da direita para a esquerda, ou seja, 0100 0001, obtém-se o valor 41h. No sentido inverso, o valor
E9h, corresponde a Eh = 14 = 8+4+2 = 11102 e 9h = 8+1=10012, portanto, E9h2 = 1110 10012).
B. Conversão de Bases.
B.1. Convertendo de Binário para Decimal (multiplicar os 1s por 2posição deste 1):
3
10002 1102
2
1
0
1
0
0
0
↓
↓
↓
↓
23
22
21
20
↓
↓
↓
↓
1 x 23 + 0 x 22 + 0 x 21 + 0 x 20
8
1 x 22 + 1 x 21 + 0 x 20
6
B.2. Convertendo de Decimal para Binário (ir dividindo por 2 e, inversamente, pegar os restos):
8
0
2
4
0
2
2
0
2
1
8 = 10002
Outra forma é: Encontre o maior valor possível, igual ou menor que o que deve ser convertido e
que corresponda a um valor exponencial de 2 (2n1,2,4,8,16,32,64,128,...) e o preencha com o
valor 1. Faça o mesmo com o valor que resta, até que não haja mais resto.
B
Experimente com 46: 25=32 (46-32=14) + 23=8 (14-8=6) + 22=4 (6-4=2) + 21=2
25
24
23
22
21
20
1
0
1
1
1
0
= 1011102
=
32
0
8
4
2
0
= 32+8+4+2 = 46
Experimente com o valor 127, depois com 235, etc.
B.3. Convertendo de Hexa para Decimal (multiplicar os valores por 16posição):
F6DA
163
F
(15)
Fx409
6
=
4CA
162
6
(6)
6x256
161
D
(13)
Dx16
160
A
(10)
Ax1
4
C
A
=
= 61440+1536+208+10 = 63194
= 10 x 160 + 12 x 161 + 4 x 162 =
1226
B.4. Convertendo de Decimal para Hexadecimal (ir dividindo por 16 e pegar os restos):
124 16
336 16
124
0
21
16
12
7
=
7Ch
336 = 150h
5
1
C. Operações com Sistema de Numeração Binário.
C.1. Adição Binária
A adição binária funciona a partir do dígito extremo a direita, obedecendo a seguinte regra: 0 + 0 = 0 ;
0 + 1 = 1 ; . 1 + 0 = 1 ; 1 + 1 = 0, "vai 1" . Observe como essas operações funcionam:
vai 1
vai 1
1
+
1
0
inicia-se aqui !
vai 1
1
1
0
0
0
0
0
0
1
1
0
0
1
1
0
1
0
1
Em Decimal: (103 + 34 = 137)
C.2. Subtração Binária
A subtração binária obedece a seguinte regra: 0 – 0 = 0 , 0 – 1 = 1, 1° “empresta” 1 , 1 – 0 = 1 ,
1 – 1 = 0 . No caso de 0-1, antes de calcular, "empresta-se" 1 do dígito à esquerda. Caso não o possua, este
próximo dígito emprestará 1 do que está a sua esquerda e assim por diante. Observe o exemplo abaixo, com o
cálculo binário 1011001 - 111011:
virou
(1)
10
(2)
0
0
10
0
10
1
0
1
0
0
1
1
1
0
0
0
1
1
0
Ao invés de 0-1, faz-se 10-1, retirando a "dezena" da
esquerda e se,
(2)
nesta casa, o valor for 0, esta retirará da sua esquerda
até haver o 1.
(1)
1
1
0
1
0
1
Em Decimal: ( 75 – 54 = 21 )
C
C.3. Multiplicação Binária
Em cada fase da multiplicação binária, obedece-se a seguinte regra: 0 × 0 = 0 , 0 × 1 = 0 , 1 × 0 = 0
, 1 × 1 = 1 . Veja como isto se aplica no exemplo abaixo:
1
1
1
1
0
1
1
×
+
1
1
0
0
0
0
1
0
1
0
1
0
1
0
0
0
1
0
1
1
1
1
1
1
1
Em Decimal: (13 x 11 = 143)
C.4. Divisão Binária
Na divisão binária, finalmente, é necessário verificar se o divisor cabe no dividendo pelo menos uma vez.
Se isto acontecer, o resultado será 1; caso contrário, será 0. Isso faz da divisão uma das operações binárias mais
simples. Veja o exemplo:
1
1
0
0
1
1
0
1
- 1
0
1
1
0
1
= 0
0
1
0
1
0
1
- 1
0
1
0
0
Em Decimal: (25 / 5 = 5)
= 0
D. Bits e Bytes + Tabela ASCII:
Os números binários refletem exatamente o que acontece no computador, ou seja, há ou não corrente
elétrica. As instruções ou dados que se dá a ele são codificados em números binários, que, por sua vez, são
manipulados e armazenados pelos circuitos internos do aparelho. Assim, quando começa-se a dominar o sistema
binário, inicia-se a compreensão de como funciona o computador (ou qualquer máquina binária).
Cada um dos dígitos de um número binário é representado eletronicamente dentro do computador por um
circuito ligado ou desligado. Se está ligado, o valor é 1. Se pelo contrário, o circuito está desligado, o valor é 0.
Cada digito é conhecido como bit (que vem da palavra inglesa Binary digiT).
Se o computador trata de números binários, então como distinguir a letra "A" da "B" e assim por diante? É
óbvio que um bit sozinho não consegue fazer isto, pois contém o valor 0 ou 1 e só. Portanto, para se conseguir
resultados mais significativos, torna-se necessário o agrupamento de vários bits, para que, em conjunto,
representem valores maiores. Para facilitar, pode-se comparar um bit com um interruptor de lâmpada que, se na
posição 0, a mantém apagada e na 1, acesa. Todavia, para se ter maior liberdade na iluminação, pode-se
combinar uma série de interruptores em circuito, os quais controlarão várias lâmpadas entre acesas e apagadas.
Em quase todos os micros, os bits estão organizados em "circuitos" de oito, formando o que se conhece como um
byte. Cada byte representa, assim, oito dígitos binários (como se fossem 8 interruptores), que portanto pode
armazenar qualquer número entre 00000000 e 11111111, ou 128 + 64 + 32 +16 + 8 + 4 + 2 + 1, que
corresponde aos valores decimais de 0 a 255. Valores maiores que 255 são representados por dois ou mais bytes.
27
12
8
26
25
24
23
22
21
20
64
32
16
8
4
2
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
...
0
1
…
255
Zeros e uns binários foram usados para representar vários números até este ponto. Os bits também
podem ser codificados para representar letras do alfabeto, números e sinais de pontuação. Representado pelo
American Standard Code for Information Interchange (ASCII), em português é Código Padrão Americano para
Troca de Informação. O código ASCII é usado amplamente em sistemas de computadores para transformar os
D
caracteres comuns do teclado (e alguns incomuns, como os caracteres semi-gráficos, o próprio "<Enter>", o
espaço, a tecla <ESC>, etc.) em linguagem de computador. Por causa das inúmeras variações destes caracteres
especiais, há vários outros códigos, como o ABNT, o ABNT2, etc. É bom entender que os caracteres digitados num
editor de textos moderno (como o WordPerfect, o Word, StarWord, WordPro, AmiPro, etc.) representa um
caractere ASCII, porém, como é WYSIWYG (what you see is what you get = o que você vê é o que você obtém),
na realidade, é totalmente gráfico, ou seja, incontáveis caracteres "esquisitos" () são mostrados ao
invés dos caracteres comuns (por exemplo, ao se digitar a tecla "y", aplicando-se a fonte "Wingdings", o caractere
será o ִ, com a fonte "Symbol", ψ, assim por diante). Se, no entanto, qualquer coisa for escrita no modo texto (e
não WYSIWYG), como no EDIT do MS-DOS, no editor do Turbo Pascal ou Turbo C ou no Bloco de Notas, os
caracteres serão puramente ASCII (e não apenas uma representação).
OBSERVAÇÕES:
Define-se, portanto, o bit como sendo a menor partícula ("átomo") de uma unidade de informação num
computador, e que pode adotar 2 valores ou estados distintos “0” ou “1”.
Quanto ao byte, podemos dizer que é um conjunto formado por 8 bits, o que equivale a um caractere
(“a”, “b”, “c”, “1”, “2”, “3”, “4”, <ENTER>, <ESC>…), ou seja, o byte é a unidade de informação (assim como
kg é a de peso, m de medida, etc.). Pode também ficar mais claro, sabendo-se (ou lembrando-se) que a tabela
ASCII contém 256 possíveis caracteres (enumerados de 0 a 255, portanto de 0000 00002 a 1111 11112, ou 0016 a
FF16, o que, óbvio, comporta 8 bits, ou 1 Byte, para cada código).
EXERCÍCIOS:
1. Converta os seguintes valores para as outras bases numéricas:
Decimal
Binário
Hexadecimal
3127
10111100
F6A
Octal
74653
2. Realize os seguintes cálculos:
a) 110011 + 01101
b) 110011 x 1101
c) 110011 – 101101
d) 1000010 ÷ 110
3. Considerando que a letra "A" na tabela ASCII corresponde ao código 65, calcule, em hexadecimal:
a) MOUSE
b) ASCII
c) LETRA
d) BRASIL
E
Download

A A. Sistemas de Numeração. Para se entender a linguagem do