Centro de Tecnologia
Departamento de Informática
Março 2009
Índice
1. Sistemas de numeração aplicados à computação ..................................................... 3
Este texto visa relembrar alguns sistemas numéricos e os métodos de conversão de base
entre eles. Inicialmente é feita uma revisão dos sistemas numéricos mais relevantes para
o assunto a ser discutido no decorrer desta publicação e depois são detalhados os
métodos de conversão entre os sistemas previamente citados.
Por fim, como a representação de números binários de alto valor torna os dígitos quase
ilegíveis para nós, é comum utilizar o sistema hexadecimal para abreviá-los, pois cada
dígito hexadecimal guarda 4 dígitos binários.
Os itens a seguir detalham estes três sistemas numéricos presentes na nossa realidade.
Cada número decimal pode ser representado em potência de 10, por exemplo, o número
"6.345,59" é representado, segundo seus pesos ou potência, da seguinte forma:
(6x103)+(3x102)+(4x101)+(5x100)+(5x10-1)+(9x10-2)
de outra forma:
6.000,00
300,00
+ 40,00
0,50
0,09
6.345,59
Quando o contador de qualquer dígito extrapola o maior número (neste caso o 9), um
“vai um” é adicionado na próxima posição (dígito à esquerda) e na atual é escrito 0
(zero), lembre-se da conta 9+1=10, na escola primária foi ensinado, nove mais um dá
zero e vai um.
Usando essa sistemática, um sistema numérico pode ser construído usando potências de
qualquer grandeza, porém, alguns são mais utilizados que outros. Por exemplo, na área
de eletrônica: sabe-se que é muito difícil construir um circuito eletrônico que armazene
dez níveis de voltagem para representar os dez símbolos de um sistema decimal e,
relativamente simples, é construir um circuito que armazene e manipule apenas dois
níveis. Por esta razão, os computadores utilizam o sistema numérico de base 2 ou
código binário [HALL, 1986].
0,1,10,11,100,101,110,111 etc.
Palavras binárias com certas quantidades de dígitos podem adquirir nomes especiais,
por exemplo, um dígito binário é chamado de BIT, proveniente das palavras inglesas
BInary digiT.
A seguir, na Tabela 1, são mostrados os nomes atribuídos para as palavras formadas por
conjuntos de bits específicos. Apesar de não existir uma padronização, estes nomes são
adotados pela maioria dos autores e serão adotados nesta publicação, mantendo
compatibilidade com os próximos capítulos.
Relativamente ao seu peso, o dígito mais à direita de uma palavra de dígitos binários é
considerado o dígito menos significativo (Least-Significant Bit = LSB), e o dígito mais
à esquerda é o mais significativo (Most-Significant Bit = MSB).
A forma encontrada foi utilizar o bit mais significativo para representar o sinal do
número, e o restante para representar a grandeza dele.
Computadores com palavras de 8 bits, usam o bit 7 (MSB) como bit de sinal e os 7 bits
restantes para representar a magnitude. Nos números formados por 16 bits, o MSB é o
bit 15, e conseqüentemente utilizado para representar o sinal. Os números formados por
outras quantidades de bits seguem esta mesma regra.
-27 26 25 24 23 22 21 20
MSB +/- LSB
bit
de
sinal
A convenção usual é que um sinal positivo seja representado pelo oitavo bit (neste caso
-27) ajustado em zero e o negativo pelo número um. Além disso, para as conversões o
bit mais significativo representa a parte negativa do número, portanto a grandeza -128.
Veja os itens 6.2 e 6.6 para aprender, respectivamente a conversão de números binários
negativos para decimal e de decimais negativos para binário.
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Os dois itens seguintes ensinam como converter números binários com sinal em
números decimais.
Exemplo:
O número 100011112, de antemão deve ser considerado negativo, porque o MSB está
ligado. Para ser convertido ele deve receber o seu complemento somado de 1.
1000 1111
0111 0000
+ 0000 0001
0111 0001
Encontra-se assim, a grandeza resultante que é 01110012 ou 19310, o que nos faz
concluir que número 100011112 dever ser expresso decimal como -19310 devido ao
MSB do número binário original estar ligado.
Da mesma forma, considere o bit mais significativo, que em números binários de 8 bits
é o 27, como sendo o bit de sinal.
Portanto o seu peso 27=128 representa a parte negativa do valor e será tomado então
como -128.
27 26 25 24 23 22 21 20
-128 64 32 16 8 4 2 1
1 1 1 1 1 0 1 1 Decimal
-128 123 -5
Portanto 1111 10112 = -510
1 1 1 1 1 0 0 1 Decimal
-128 121 -7
Portanto 1111 10012 = -710
1 1 0 1 0 1 1 1 Decimal
-128 87 -41
Portanto 1010 01112 = -4110
1 1 1 1 1 1 1 1 Decimal
-128 127 -1
Portanto 1111 11112 = -110
Por este último exemplo é possível concluir que em número de 8 bits sinalizados, é
possível contar de -128 (1000 00002) até 127(0111 11112), passando naturalmente pelo
0 (0000 00002).
Trabalha-se nesta conversão com grupos de quatro dígitos binários (nibble) somando
seus pesos para compor um dígito hexadecimal. Caso algum dígito exceda o valor 9,
deve-se utilizar os correspondentes A até F.
1100 00112 =
= 12 + 3
Existem duas formas para chegar ao resultado neste tipo de conversão; o leitor poderá
escolher o que mais lhe agradar, pois os resultados são precisos em ambos os casos.
Exemplo:
Por exemplo, para representar o número -7 em binário, deve-se partir da magnitude (7)
em binário que é 0000 0111 (neste exemplo 8 bits), fazer seu complemento e somar 1 a
este valor. Este exemplo é ilustrado na Tabela 3 e, um segundo, na Tabela 4.
Exemplo 1
409610 = 100016
5910 = 3B16
Semelhante ao método apresentado no item 3.2.1, multiplica-se cada dígito pela sua
potência equivalente e, depois, somam-se os elementos obtidos. Cada dígito
representado por uma letra entre A e F deve ser convertido antes da multiplicação para
seu correspondente decimal: A=10, B=11, C=12, D=13, E=14 e F=15.
Exemplo 1
3B16 = 5910
Exemplo 2
1516 = 2110
Cada dígito hexadecimal representa 4 dígitos em binário, portanto, a conversão deve ser
feita para cada dígito, separadamente, de forma semelhante ao primeiro método do item
3.2.4.
O número 3B16 compõe um número de 8 bits (byte), ou dois de 4 bits, portanto deve ser
visto da forma mostrada na Tabela 6.
Por exemplo, o número decimal 15 ocupa 4 dígitos binários formando o nibble 1111.
Para mostrar esse número, convertido em decimal em um display de 7 segmentos é
necessário separá-lo em 2 partes: o número 1 e o número 5, o que forma também dois
números em binário: o número 0001 e número 0101, respectivamente. Somente após
essa separação o sistema digital mostrará o número para o usuário.
O código BCD consiste em somar a constante 6 ao nibble que está sendo convertido, o
resultado extrapolará o dígito hexa e será necessário um “vai um”.
10102..
+ 01102..
1 0000BCD
Este código usa somente os 10 primeiros números (0000 a 1001) dos 16 possíveis (0000
a 1111) de cada conjunto de 4 bits do código binário.
Da mesma forma, para construir a seqüência para três variáveis, reflete-se o resultado
do espelhamento para dois bits e insere-se 0's e 1's criando a seqüência 000 001 011 010
110 111 101 100.