sistemas decimais0001

Propaganda
Este capítulo é um prelúdio dos capítulos 3 e 4. No Capítulo 3, mostraremos como os dados
são armazenados no computador. No 4, abordaremos como operações lógicas e aritméticas são
realizadas sobre os dados. Este capítulo é uma preparação para o entendimento do conteúdo dos
próximos dois. Os leitores que conhecem os sistemas de numeração podem passar diretamente
para o Capítulo 3, sem perder a continuidade. Observe que os sistemas de numeração aqui discutidos são "representações feitas com papel e lápis"; no próximo capítulo, trataremos de como
esses números são armazenados em um computador.
Objetivos
Depois de estudar este capítulo, o aluno será capaz de:
O
Compreender
o conceito de sistemas de numeração.
O
Distinguir entre sistemas de numeração não posicionais e posicionais.
O
Descrever o sistema decimal (de base 10).
O
Descrever o sistema binário (de base 2).
O
Descrever o sistema hexadecimal
O
Descrever o sistema octal (de base 8).
O
Converter um número no sistema binário, octal ou hexadecimal
ma decimal.
para um número no siste-
O
Converter um número no sistema decimal, octal ou hexadecimal
ma binário.
para um número no siste-
O
Converter
um número no sistema binário para o sistema octal e vice-versa.
O
Converter
um número no sistema binário para o sistema hexadecimal
O
Descobrir
do valor.
o número de dígitos necessários em cada sistema para representar
(de base 16).
e vice-versa,
determina-
••
Fundamentos da ciência da computação
2.1
INTRODUÇÃO
Um sistema de numeração (ou sistema numérico) define como um número pode ser representado utilizando distintos símbolos. Em diferentes sistemas, um número pode ser representado
de diferentes maneiras. Por exemplo, os dois números (ZA) 16e (5Z)g referem-se à mesma quantidade, (4Z)lO' mas suas representações são diferentes. Isso é o mesmo que utilizar as palavras
cheval (em francês) e equus (em latim) para se referir à mesma entidade, um cavalo.
Assim como utilizamos símbolos (caracteres) para criar palavras em um idioma, empregamos símbolos (dígitos) para representar números. No entanto, sabemos que o número de
símbolos (caracteres) em qualquer idioma é limitado. Precisamos repetir caracteres e combiná-los para criar palavras. Isso também se aplica aos números: temos uma quantidade limitada de
símbolos (dígitos) para representar números, o que significa que dígitos precisam ser repetidos.
Diversos sistemas de numeração foram utilizados, no passado, que podem ser classificados
em dois grupos: sistemas posicionais e não posicionais. Nosso principal objetivo é discutir os
sistemas de numeração posicionais, mas também daremos exemplos de não posicionais.
2.2
SISTEMAS DE NUMERAÇÃO POSICIONAIS
Em um sistema de numeração posicional, a posição que um símbolo ocupa no número determina o valor que ele representa. Neste sistema, um número representado como:
± (5k_1
...
525150.5_15_2
... 5)b
tem o valor de:
n
=±
5k_1
x bk-1
+ ...+ 51
X b1 + 50 x bO
+I
5_1 X b-1 + 5_2 X b-2 +
...5_1 X
b-I
I
onde S é o conjunto de símbolos, b é a base (ou raiz), que é igual ao número total de símbolos
no conjunto S, e Si é o símbolo na posição i. Observe que utilizamos uma expressão que pode
ser expandida para a direita ou esquerda. Em outras palavras, a potência de b pode ser de O a
k - 1 em uma direção, e de -1 a -I na outra. Os termos com potências não negativas de b são
relacionados à parte integral do número, ao passo que aqueles com potência negativa de b são relacionados à parte fracionária do número. O sinal ± mostra que o número pode ser positivo ou
negativo. Estudaremos aqui vários sistemas de numeração posicionais.
o sistema decimal
(de base 10)
O primeiro sistema posicional que discutiremos é o sistema decimal. A palavra decimal
é derivada da raiz em latim, decem (que significa dez). Neste sistema, a base b é igual a 10, e
utilizamos dez símbolos para representar um número. O conjunto de símbolos
S = {O, 1, Z, 3,
4,5,6, 7, 8, 9}. Como sabemos, os símbolos nesse sistema geralmente são chamados de dígitos
decimais, ou apenas dígitos. Neste capítulo, utilizamos ± para mostrar que um número pode ser
positivo ou negativo, mas lembre-se de que esses sinais não são armazenados em computadores,
pois estes lidam com o sinal de modo diferente, como discutiremos no Capítulo 3.
é
Computadores armazenam números positivos e negativos de modo diferente.
No sistema decimal, um número é escrito como:
± (5k_1
•••
52 S1 So .5_15_2
... 5)10
Mas, por questões de simplicidade, geralmente, eliminamos os parênteses, a base e o sinal + (se
o número for positivo). Por exemplo, escrevemos o número + (55Z,Z3)1O como 55Z,Z3: a base
e o sinal + estão implícitos.
Sistemas de numeração
Números inteiros
Um número inteiro (integral, sem nenhuma parte fracionária) no sistema decimal é familiar para todos nós - utilizamos números inteiros em nossa vida diária. Na
verdade, os utilizamos tanto, que eles são intuitivos. Representamos um número inteiro como
± 5k_l ... 5150. O valor é calculado como:
N
=±
Sk_'
x
10k-'
+ Sk_
2 X
10k-2
+ ...+ S2
102
X
+ S,
10'
X
+ So x
10°
onde Si é um dígito, b = 10 é a base e k é o número de dígitos.
Outra maneira de mostrar um número inteiro em um sistema de numeração é utilizar valores posicionais, I que são potências de 10 (10°, 101, ... 1Ok - 1) para números decimais. A Figura
2.1 mostra um número inteiro no sistema decimal utilizando valores posicionais.
:t
10k-1
10'-2
102
101
10°
Valor posicional
I Sk_1
Sk_2
S2
SI
s,
Número
~
~
~
~
~
N = :t S'_I
Figura 2.1
X
10k-1 + S'_2
X
+
10'-2
...
+
S,
X
+ SI
10'
Valores posicionais para um número inteiro
X
101
+
So x 100
Valor
no sistema decimal
Exemplo 2.1
A seguir, os valores posicionais para o número inteiro 224, no sistema decimal.
102
101
2
N
=
+
2
2
X
2
10
+ 2
X
+
1
10
10°
Valor posicional
4
Número
4 x 10°
Valor
Observe que o dígito 2 na posição 1 tem o valor 20, mas o mesmo dígito na posição 2 tem o valor
200. Veja também que normalmente eliminamos o sinal +, mas ele está implícito.
Exemplo 2.2
A seguir, veja os valores posicionais para o número decimal -7508. Utilizamos 1, 10, 100 e
1.000, em vez de potências de 10.
N
1000
100
10
1
Valor posicional
7
5
O
8
Número
(7 x 1.000
+
5 x 100
+
O x 10
+
8
x
1)
Valor
Valor máximo
Às vezes, precisamos conhecer o valor máximo de um número inteiro decimal que pode ser
representado por k dígitos. A resposta é Nrnáx = lOk - 1. Por exemplo, se k = 5, então, o valor
máximo é Nrnáx = 105 - 1 = 99.999.
I
Do inglês place value. Valor do dígito (ou símbolo) dependente da posição em que ele se encontra no número.
(N.R.T.)
-
Fundamentos
da ciência da computação
Reais
Um número real (que tem uma parte fracionária) no sistema decimal também é familiar. Por exemplo, utilizamos este sistema para mostrar dólares e centavos (US$ 23,40). Podemos representar um número real como ± Sk-I ... SI 50 . 5_1 ... 5_1, O valor é calculado como:
Parte integral
R
=±
x
5k_1
10k-1
+ ... +
51 X
Parte fracionária
101 +
50
x 10° + I
5_1 X
10-1 + ... 5_1 X 10-1
I
onde SI é um dígito, b = 10 é a base, k é o número de dígitos na parte integral e l é o número
de dígitos na parte fracionária. O ponto decimal que utilizamos em nossa representação separa
a parte fracionária da parte integral.
Exemplo 2.3
A seguir, veja os valores posicionais para o número real +24,13.
+
R
o sistema
101
10°
2
4
+
(2 x 10
10-1
•
+
4x1
1 x 0,1
+
10-2
Valor posicional
3
Número
3 x 0,01)
Valor
binário (de base 2)
O segundo sistema de numeração posicional abordado é o sistema binário. A palavra binário é
derivada da raiz em latim bini (ou de dois em dois). Neste sistema, a base b é igual a 2, e utilizamos somente dois símbolos, S = {O, l}. Os símbolos neste sistema geralmente são chamados
de dígitos binários ou bits (abreviação da expressão inglesa binary digit). Como veremos no
Capítulo 3, dados e programas são armazenados no computador utilizando padrões binários,
uma sequência de bits. Isso porque o computador é composto de chaves eletrônicas que podem
ficar em apenas dois estados, ligado e desligado. O bit 1 representa um desses dois estados e o
bit O, o outro.
Números inteiros
é calculado como:
Podemos representar um número inteiro como
±
(Sk_1 ... SI Soh O valor
onde Si é um dígito, b = 2 é a base e k é o número de bits. Outra maneira de mostrar um número binário é utilizando valores posicionais (2°, 21, ... 2k-I). A Figura 2.2 mostra um número no
sistema binário utilizando valores posicionais:
±
N= ±
Figura 2.2
2k-l
2'-'
2'
21
20
Sk_1
Sk_2
S,
SI
s,
~
~
~
~
~
Sk_IX 2k-1
+ Sk_'x 2k-'
+
...
+
S, x2'
Valores posicionais para um número
+
inteiro
SI X21
+
Valor posicional
I
s, x2°
no sistema binário
Número
Valor
Sistemas de numeração
Exemplo2.4
A seguir, veja que o número (11001)2 no sistema binário é o mesmo que 25 no sistema decimal.
O 2 subscrito mostra que a base é 2.
Valor posicional
o
Número
Decimal
Observe que o número decimal equivalente é N
=
16
+ 8 + O + O + 1 = 25.
Valor máximo
O valor máximo de um número inteiro binário com k dígitos é N . = 2k
_ 1 = 31.
max
.
-
1. Por exemplo, se
k = 5, então, o valor máximo é N max. = 25
Reais Um número real - com uma parte fracionária opcional - no sistema binário pode ser
composto de k bits do lado esquerdo e I bits do lado direito, ± (5k- J ..• 5J 50 ·5_J ••. 5_1)2'
O valor pode ser calculado como:
Parte integral
R
=±
5k_1 x
2k-1
+ ... +
51 X 21
•
+
50
x
+
20
Parte fracionária
I 5_1
X
2-1
+ ...5_1 X
2-1
onde 5i é um dígito, b = 2 é a base, k é o número de bits à esquerda e I é o número de bits à
direita do ponto decimal. Observe que k começa a partir de O, mas I começa a partir de 1. A
potência mais elevada é k - 1 e a menor potência é -l.
Exemplo 2.5
A seguir, veja que o número [l O'lLl}, no sistema binário é igual ao número 5,75 em decimal.
Valor posicional
o
R
=
•
+
1 X 22
Observe que o valor no sistema decimal é R
o sistema hexadecimal
Número
1
X
2-1
+
1 x 2-2
= 4 + O + 1 + 0,5 + 0,25 =
Valor
5,75.
(de base 16)
Embora o sistema binário seja utilizado para armazenar dados em computadores, ele não é conveniente para a representação de números fora do computador, uma vez que um número em
notação binária é muito mais longo do que seu correspondente em notação decimal. Contudo,
o sistema decimal não mostra o que é armazenado diretamente em um computador como
binário - não existe relação óbvia entre o número de bits em binário e o número de dígitos
decimais. A conversão de um para outro não é rápida, como veremos em breve.
Para superar esse problema, foram criados dois sistemas posicionais: hexadecimal e octal.
Primeiro, discutiremos o sistema hexadecimal, que é mais comum. A palavra hexadecimal é
derivada da raiz grega hex (seis) e da raiz latina decem (dez). Para ser consistente com decimal
e binário, ele, na verdade, deveria ser chamado de sexadecimal, a partir das raízes em latim sex
e decem. Neste sistema, a base b é igual a 16, e utilizamos dezesseis símbolos para representar um número. O conjunto de símbolos éS = {O, 1,2,3,4,
5,6, 7, 8, 9, A, B, C, D, E, F}.
Note que os símbolos A, B, C, D, E, F (em maiúsculás ou minúsculas) são equivalentes a 10,
EI
Fundamentos da ciência da computação
11, 12, 13, 14 e 15, respectivamente.
dígitos hexadecimais.
Números
inteiros
Os símbolos neste sistema geralmente
Podemos representar
são chamados de
± 5k _ I ... SI 50- O valor é
um número inteiro como
calculado como:
onde Si é um dígito, b = 16 é a base e k é o número de dígitos.
Outra maneira de mostrar um número hexadecimal é utilizar valores posicionais
161, '" 16k -I). A Figura 2.3 mostra um número no sistema hexadecimal, utilizando
res posicionais.
16*-'
±
I SH
162
16'
160
Valor posicional
Sk_2
S2
S,
s,
Número
~
~
N = ±S*_, X 16*-' +
Sk_2
...
x 16*-2 +
~
+
~
S2 X 162
+ S,
Valores posícionais para um número inteiro
Figura 2.3
Exemplo
16*-2
X
(16°,
valo-
~
16'
So x 160 Valor
+
no sistema hexadecimal
2.6
A seguir, veja que o número (2AE)16 em hexadecimal
2
N
2
X
162
+
é equivalente
a 686 em decimal.
161
Valor posicional
A
Número
10 X 16'
+
14 x 16°
Valor
Valor máximo
O valor máximo de um número inteiro hexadecimal com k dígitos é N max,
plo, se k = 5, então, o valor máximo é Nmáx = 165 - 1 = 1.048.575.
Reais Embora um número real também possa ser representado
não é muito comum. Deixamos isso como um exercício.
o sistema
=
16k
-
1. Por exem-
no sistema hexadecimal,
isso
octal (de base 8)
O segundo sistema que foi desenvolvido para mostrar o equivalente do sistema binário fora do computador é o sistema oetal. A palavra octal é derivada da raiz em latim octo (oito). Neste sistema, a
base b é igual a 8, e utilizamos oito símbolos para representar um número. O conjunto de símbolos é
S = {O, 1, 2, 3, 4, 5, 6, 7}. Os símbolos neste sistema geralmente são chamados de dígitos oetais.
Números
inteiros
Podemos representar
um número inteiro como
calculado como:
onde Si é um dígito, b = 8 é a base e k é o número de dígitos.
± 5k _ I ... SI 50' O valor é
Sistemas de numeração
Outra maneira de mostrar um número octal é utilizar valores posicionais (80, 81,
A Figura 2.4 mostra um número no sistema octal, utilizando valores posicionais.
±
8k-1
8'-2
82
81
80
Valor posicional
I Sk_1
Sk_2
S2
SI
s,
Número
~
~
~
~
~
N
= ± Sk_1 x 8k-1
Figura 2.4
...
+
Sk_2 X
...
+
k-2
8
+
+
S2 x8
2
Valores posicionais para um número
SI x81
inteiro
+
s, x8°
8k -I).
Valor
no sistema octal
Exemplo 2.7
A seguir, veja que o número (1256)8 em octal é o mesmo que 686 em decimal.
N
=
1
X
83
+
82
8°
Valor posicional
2
6
Número
6 x 8°
Valor
2
X
+
82
Note que o número em decimal é N
=
512
5
X
+
8'
+ 128 + 40 + 6 = 686.
Valor máximo
O valor máximo de um número inteiro octal com k dígitos é Nrnáx = 8k
k = 5, então, o valor máximo é Nmáx = 85 - 1 = 32.767.
Reais Embora um número real também possa ser representado
muito comum. Deixamos isso como um exercício.
-
1. Por exemplo, se
no sistema octal, isso não é
Resumo dos quatro sistemas posicionais
A Tabela 2.1 mostra um resumo dos quatro sistemas de numeração posicionais discutidos neste capítulo.
Tabela 2.1
Resumo dos quatro sistemas de numeração
Sistema
Base
Decimal
10
Binário
2
0, 1
Oetal
8
0, 1, 2, 3, 4, 5, 6, 7
Hexadecimal
16
posicionais
Símbolos
Exemplos
0, 1, 2, 3,4, 5,6, 7, 8, 9
2345,56
0,1,2,3,4,5,6,
1(1001,11)2
7, 8, 9, A, B, C, D, E, F
(156,23)8
(A2C,A1),6
A Tabela 2.2 mostra como o número 15 é representado com dois dígitos em decimal, quatro
dígitos em binário, dois dígitos em octal e somente um dígito em hexadecimal. A representação
hexadecimal é, definitivamente, a mais curta.
••
Fundamentos
da ciência da computação
Tabela 2.2
Comparação de números nos quatro sistemas
Binário
Decimal
1
Detal
!
O
!
O
O
I
O
1
1
1
I
Hexadecimal
I
I
2
10
2
3
11
3
4
100
4
I
2
3
-
4
I
5
101
5
6
110
6
7
111
7
8
1000
10
8
9
1001
11
9
10
1010
12
11
1011
13
12
1100
14
13
1101
15
14
1110
16
15
1111
17
5
I
6
7
I
=R
A
~~ 1
F
~
Conversão
Precisamos saber como converter um número de um sistema para seu equivalente em outro.
Como o sistema decimal é mais familiar do que outros sistemas, primeiro, mostraremos como
converter qualquer base para decimal. Em seguida, mostraremos como converter de decimal
para qualquer base. Por fim, mostramos como converter, facilmente, de binário para hexadecimal ou octal e vice-versa.
De qualquer base para decimal
Este tipo de conversão é fácil e rápido. Multiplicamos cada
dígito com seu valor posicional no sistema original e somamos os resultados parciais para obter
o número no sistema decimal. A Figura 2.5 mostra a ideia.
Ponto decimal
t
WW·[g~
Binário
-1
b
o
k-l
I
S
k-)
xb+
••• +Sxb+Sxb
o
t
I Integral I
Figura 2.5
Convertendo
o
o
I
-I
-2
b
-1
-I
-2
+ IS_)x b + S_2x b + •••
I
Valores posicionais
b
+ 'S_lx
b I
Multiplicação
t
Fração
outras bases para decimal
Decimal
lEI
Sistemas de numeração
Exemplo 2.8
A seguir, veja como converter o número binário (110,11)2 para decimal: (110,11)2
Binário
Valor posicional
22
Resultado parcial
4
+
2-1
2°
+
2
Decimal: 6,75
6,75.
°0 D
°
21
=
+
°
2-2
+
0,5
0,25
Exemplo 2.9
Veja, a seguir, como converter o número hexadecimal
Hexadecimal
A
Valor posicional
16°
Resultado parcial
16
+
10
(lA,23)16 para decimal.
-
3
2
16-2
+
0,125
+
0,012
Decimal: 26,137
Note que o resultado na notação decimal não é exato, porque 3 x 16-2 = 0,01171875. Arredondamos esse valor para três dígitos (0,012). Em outras palavras (lA,23)16 "'"26,137. Quando
convertemos um número em decimal para hexadecimal, precisamos especificar quantos dígitos
deixamos à direita do ponto decimal.
Exemplo 2.10
A seguir, veja como converter
(23,17)8 para decimal.
Octal
2
3
Valor posicional
81
8°
Resultado parcial
16
+ 3
Decimal: 19,234
Isso significa que (23,17)8 "'" 19,234 em decimal.
= 0,109375.
-o o
8-1
+
0,125
8-2
+
0,109
Mais uma vez, arredondamos
7 x 8-2
=
De decimal para qualquer base
Podemos converter um número decimal para seu equivalente em qualquer base. Precisamos de dois procedimentos, um para a parte integral e outro para
a fracionária.
Convertendo a parte integral
A parte integral pode ser convertida utilizando divisão repetidamente.
A Figura 2.6 mostra o
diagrama em UML para o processo. Esses diagramas são utilizados em todo o livro. Os leitores
que não estiverem familiarizados com diagramas em UML devem consultar o Apêndice B.
-
Fundamentos da ciência da computação
Fonte: parte integral do número decimal
Destino: parte integral do número convertido
Base: base de destino
Condição: o quociente é zero
o quociente
se torna
uma nova fonte
Convertendo
Figura 2.6
11
'
a parte integral
de um número em decimal para outras bases
Chamamos a parte integral do número decimal de fonte e a parte integral do número convertido
de destino. Primeiro, criamos um destino vazio. Em seguida, dividimos repetidamente
a fonte
para obter o quociente e o resto, que é inserido à esquerda do destino. O quociente se torna uma
nova fonte. A Figura 2.7 mostra como o destino é produzido com cada repetição.
Divide por b
@----0- ... +-{§}---@}---II
Q: Quocientes
R: Restos
F: Fonte
D: Destino
D
Figura 2.7
Convertendo
Di: Dígito
a parte integral
de destino
de um número em decimal para outras bases
Agora, utilizamos a Figura 2.7 para ilustrar o processo manualmente,
com alguns exemplos.
Exemplo 2.11
A seguir, veja como converter 35 de decimal para binário. Começamos com o número em decimal, movemos para a esquerda, enquanto, continuamente, encontramos os quocientes e o resto
da divisão por 2. O resultado é 35 = (lOOOllh.
O
11I
2
4
8
~
~
~
~
~
~
1
O
O
O
1
1
<-
17
<-
Decimal
Binário
Sistemas de numeração
Exemplo 2.12
A seguir, veja como converter 126 de decimal para seu equivalente no sistema octal. Movemos
para a direita, enquanto, continuamente, encontramos os quocientes e o resto da divisão por 8.
O resultado é 126 = (176)8.
o
15
+-
11II
t
t
t
1
7
6
Decimal
Octal
Exemplo 2.13
A seguir, veja como converter 126 de decimal para seu equivalente no sistema hexadecimal.
Movemos para a direita, enquanto, continuamente, encontramos os quocientes e o resto da
divisão por 16. O resultado é 126 = (7E)16.
o
7
+-
11II
t
t
7
E
Decimal
Hexadecimal
Convertendo a parte fracionária
A parte fracionária pode ser convertida utilizando multiplicação repetidamente. Chamamos
essa parte do número decimal de fonte e a do número convertido de destino. Primeiro, criamos
um destino vazio. Em seguida, multiplicamos repetidamente a fonte para obter o resultado. A
parte integral do resultado é inserida à direita do destino, enquanto a parte fracionária se torna
a nova fonte. A Figura 2.8 mostra o diagrama em UML para o processo.
Fonte: parte fracionária do número decimal
Destino: parte fracionária do número convertido
Condição: a parte fracionária é zero ou
os dfgitos de destino são suficientes
A parte fracionária do
resultado se torna
uma nova fonte
Figura 2.8
Convertendo
a parte fracionária
de um !lúmero
em decimal para outras bases
-
Fundamentos da ciência da computação
A Figura 2.9 mostra como o destino é produzido em cada repetição.
ilustrar o processo manualmente, com alguns exemplos.
Multiplica
D D_l
r1 r1
D_2
.
D_J
Convertendo
F: Fonte
D: Destino
D_,
a parte fracionária
I: Parte integral
F: Parte fracionária
Observação:
A fração nunca pode se tornar zero.
Para quando dígitos suficientes tiverem
Figura 2.9
a figura para
por b
II-{~]--~- ---{D-[9J
I
Utilizamos
D;: Dígito
de destino
sido criados.
de um número de decimal para outras bases
Exemplo 2.14
Conversão do número decimal 0,625 para binário.
Solução
Uma vez que o número 0,625 não tem parte integral, o exemplo mostra como a parte fracionária é calculada. A base aqui é 2. Escreva o número decimal no canto esquerdo. Multiplique
o número continuamente por 2 e registre a parte integral e a fracionária do resultado. A parte
fracionária é movida para a direita, e a parte integral é registrada em cada operação. Pare quando
a parte fracionária for O ou quando houver bits suficientes. O resultado é (0,10 1) 2'
0,25
Decimal
-->
0,50
0,00
-->
t
Binário
•
°
Exemplo 2.15
A seguir, veja como converter 0,634 para octal utilizando o máximo de quatro dígitos. O resultado é 0,634 = (0,5044)8' Note que multiplicamos por 8 (base octal).
Decimal
Octal
0,072
•
-->
0,576
-->
0,608
t
t
t
°
4
4
-->
0,864
Exemplo 2.16
A seguir, veja como converter 178,6 de decimal para hexadecimal utilizando somente um dígito
à direita do ponto decimal. O resultado é 178,6 = (B2,9)16' Note que dividimos ou multiplicamos por 16 (base hexadecimal).
Decimal
Hexadecimal
°
11
t
B
+-. --->
t
2
t
•
9
0,6
Sistemas de numeração
Exemplo 2.17
Um método alternativo para converter um pequeno número inteiro decimal (geralmente, menor do que 256) para binário é fracioná-lo como a soma de números que são equivalentes aos
valores posicionais binários, mostrados a seguir:
Valor posicional
Equivalente em decimal
Utilizando
seguir:
128
essa tabela, podemos
Decimal 165 =
+
128
converter
O
16
8
165 para binário (10100101)2'
+
32
1
O
Binário
32
64
+
+
O
O
O'
+
4
O
1
como é mostrado
+
a
+
O
O
Exemplo 2.18
Um método similar pode ser utilizado para converter uma fração decimal para binária quando o
denominador é uma potência de dois:
2-4
Valor posicional
Equivalente decimal
Utilizando essa tabela, convertemos
Decimal
27/
64
=
27/64 para binário (0,011011)2'
+
+
+
+
como é mostrado a seguir:
+
+
Alinhando essas frações de acordo com valores decimais equivalentes:
Decimal
27/
64
=
O
+
+
O
Binário
+
O
+
+
O
Número de dígitos
Geralmente, precisamos conhecer o número de dígitos antes de converter um número de decimal para outras bases. Em um sistema de numeração posicional com base b, sempre podemos
encontrar o número de dígitos de um número inteiro utilizando a relação k = [10gb Nl, onde [xl
significa o menor número inteiro maior ou igual a x (que também é chamado de teto de x), e N
é o valor decimal do número inteiro. Por exemplo, podemos encontrar o número de bits requerido no número decimal 234 em todos os quatro sistemas, como a seguir:
a.
b.
c.
d.
Em
Em
Em
Em
decimal: kd = [loglO 2341 = [2,371 = 3, que é óbvio.
binário: kb = [10g22341 = [7,81 = 8. Isso é verdadeiro, porque 234 = (11101010h
octal: ko = [logs 2341 = [2,621 = 3. Isso é verdadeiro, porque 234 = (352)8
h~xadecimal kh = [10g162341 = [1,961 = 2. Isso é verdadeiro, porque 234 = (EA)16
Veja o Apêndice G para obter informações
incluir log para nenhuma base.
sobre como calcular 10gb N, se sua calculadora não
Conversão binário-hexadecimal
Podemos facilmente transformar um número binário para
hexadecimal e vice-versa. A razão para isso é que existe uma relação entre as duas bases: quatro
EI
Fundamentos da ciência da computação
bits em binário equivalem a um dígito em hexadecimal.
versão pode ser feita.
Bi: dígito
binário
(bit)
Hi: dígito
A Figura 2.10 mostra como essa con-
hexadecimal
Binário
Hexadecimal
Figura 2.10
Exemplo
Conversão de binário para hexadecimal
e vice-versa
2.19
Mostre o equivalente
hexadecimal
do número binário (1001110001Oh.
Solução
Primeiro, arranjamos o número binário em padrões de quatro bits: 100 1110 001 O. Observe que
o padrão mais à esquerda pode ter de um a quatro bits. Em seguida, utilizamos o equivalente
de cada padrão mostrado na Tabela 2.2 para transformar o número para hexadecimal: (4E2)16'
Exemplo
2.20
Qual é o equivalente
binário de (24C)16?
Solução
Cada dígito hexadecimal é convertido para padrões de quaro bits: 2
O resultado é (001001001100)2'
--->
001 O, 4
--->
01 00 e C
--->
1100.
Conversão binário-octal
Podemos facilmente converter um número de binário para octal e
vice-versa. A razão é que existe uma relação interessante entre as duas bases: três bits equivalem
a um dígito octal. A Figura 2.11 mostra como esta conversão pode ser feita.
Bi: dígito
I
Bm
binário
(bit)
Bm_, Bm_2\
0i: dígito
I
Bs
octal
B4
B3
II
B2
B,
Bo
I
--o--'-:-------l,----o~
'------Figura 2.11
Exemplo
Conversão de binário
Binário
Octal
J
para octal e vice-versa
2.21
Mostre o equivalente
octal do número binário (10 1110010) 2'
Solução
Cada grupo de três bits é traduzido em um dígito octal. O equivalente de cada grupo de três bits
é mostrado na Tabela 2.2. O resultado é (562)8'
Sistemas de numeração
Exemplo 2.22
Qual é o equivalente
binário de (24)8?
Solução
Escreva cada dígito octal como seu padrão binário equivalente
para obter (010100)2'
Conversão octal-hexadecimal Não é difícil converter um número de octal para hexadecimal
ou vice-versa. Podemos utilizar o sistema binário como intermediário. A Figura 2.12 mostra um
exemplo disso.
5
I,
O
POd"
~!
O
O
O
O
O
O
I
Binário
I
Hexadecimal
~~~
CC
Figura 2.12
4
E
Conversão de octal para hexadecimal
e vice-versa
Os itens a seguir ilustram o processo:
O
Para converter de octal para hexadecimal, primeiro convertemos o número do sistema octal
para binário. Em seguida, rearranjamos os bits em grupos de quatro para encontrar o equivalente em hexadecimal.
O
Para converter de hexadecimal para octal, primeiro convertemos o número do sistema hexadecimal para binário. Em seguida, rearranjamos os bits em grupos de três para encontrar
o equivalente em octal.
Número de dígitos
Na conversão de uma base para outra, frequentemente
precisamos saber qual é o número
mínimo de dígitos no sistema de destino, se soubermos o número máximo de dígitos no sistema-fonte. Por exemplo, se soubermos que utilizamos, no máximo, seis dígitos decimais no
sistema-fonte, deveremos saber o número mínimo de dígitos binários de que precisamos no sistema de destino. Em geral, assumimos que estamos utilizando k dígitos no sistema de base b)"
O número máximo que podemos representar no sistema-fonte é bjk - 1. O número máximo
que podemos ter no sistema de destino é b2x - 1. Portanto, b2x - 1 :2: bjk - 1. Isso significa que
k j' ou seja:
.
b2x>b
-
x:2: k
X
(logb,/logb2)
ou
x = fk x (logb,/logb2)1
Exemplo 2.23
Encontre o número mínimo de dígitos binários exigidos para armazenar números inteiros decimais com um máximo de seis dígitos.
Solução
= 6, b, = 10 e b2 = 2. Então, x = rk x (logb/logb2)1 = r6 x (1/0,30103)1 = 20. O maior
número decimal de seis dígitos é 999.999, e o maior número binário de 20 bits é 1,048,575.
k
EI
Fundamentos
da ciência da computação
Observe que o maior número que pode ser representado por um número de 19 bits é 524.287,
que é menor do que 999.999. Definitivamente, precisamos de vinte bits.
2.3
SISTEMAS DE NUMERAÇÃO NÃO POSICIONAIS
Embora sistemas de numeração não posicionais não sejam utilizados em computadores, apresentamos uma breve análise aqui, para fins de comparação com sistemas de numeração posicionais. Um sistema de numeração não posicional ainda utiliza uma quantidade limitada de
símbolos, e cada símbolo tem um valor. Entretanto, a posição que um símbolo ocupa no número
normalmente não tem relação com seu valor - o valor de cada símbolo é fixo. Para encontrar o
valor de um número, somamos o valor de todos os símbolos que estão na representação. Nesse
sistema, um número é representado como:
e tem o valor de:
Parte fracionária
Parte integral
n=±
Sk_1+
... +S1+S0
Existem algumas exceções à regra de adição que acabamos de mencionar, como mostra o Exemplo 2.24.
Exemplo 2.24
Os numerais romanos são um bom exemplo de um sistema de numeração não posicional.
Esse sistema foi inventado pelos romanos e utilizado até o século XVI, na Europa, mas ainda
é empregado em eventos esportivos, em relógios e outras aplicações. Ele tem um conjunto de
símbolos S = {I, v, X, L, C, D, M}. Os valores de cada símbolo são mostrados na Tabela 2.3
Tabela 2.3
Valores de símbolos no sistema de numeração
Símbolo
I
V
X
L
C
D
M
Valor
1
5
10
50
100
500
1000
Para encontrar o valor de um número, precisamos
gras específicas:
I.
2.
romano
adicionar o valor de símbolos sujeitos a re-
Quando um símbolo com menor valor é colocado depois de um símbolo tendo um valor
igualou maior, os valores são adicionados.
Quando um símbolo com menor valor é colocado antes de um símbolo tendo um valor
maior, o menor valor é subtraído do maior.
3. Um símbolo
SI não pode ser colocado antes de outro símbolo S2' se SI :5 10 X S2' Por
exemplo, I ou V não podem vir antes de C.
4.
5.
Para números grandes, uma barra é colocada acima de qualquer um dos seis símbolos (todos
os símbolos, exceto I) para expressar a multiplicação por mil. Por exemplo, V = 5.000 e
M = 1.000.000.
Embora os romanos utilizassem a palavra nulla (nada) para representar o conceito de zero,
os numerais romanos não têm um dígito zero em seu sistema.
Sistemas de numeração
A seguir, são mostrados
2.4
alguns números romanos e seus valores.
111
->
IV
->
VIII
-
3
1+ 1+ 1
5 -1
4
->
5+1+1+1
8
XVIII
->
10+5+1+1+1
18
XIX
-->
10+(10-1)
19
LXXII
->
50 + 10 + 10 + 1 + 1
72
CI
->
100 + 1
101
MMVII
->
1000 + 1000 + 5 + 1 + 1
2007
MDC
->
1000 + 500 + 100
1600
LEITURA RECOMENDADA
Para saber mais detalhes sobre os assuntos discutidos
guintes livros:
O
Stalling, W Computer Organization
Hall, 2000
O
Mano, M. Computer System Architecture.
O
Null, L.; Lobur, J. Computer Organization
tlett, 2003
O
Brown, S.; Vranesic Z. Fundamentais
Graw-Hill, 2003
2.5
neste capítulo, são recomendados
and Architecture.
os se-
Upper Saddle River, NJ: Prentice
Upper Saddle Ríver, NJ: Prentice Hall, 1993
and Architecture.
Sudbury, MA: Jones and Bar-
of Digital Logic with Verilog Design. Nova York: Me-
TERMOS PRINCIPAIS
Este capítulo apresentou os seguintes termos
páginas nas quais ocorrem pela primeira vez:
principais,
que são enumerados
base 16
bits 18
dígitos binários 18
dígitos decimais 16
dígitos hexadecimais 20
dígitos octais 20
número inteiro 17
números romanos 30
raiz 16
real 18
sistema binário 18
sistema de numeração
sistema de numeração
não posicional 30
16
sistema de numeração posicional 16
sistema decimal 16
sistema hexadecimal 19
sistema octal 20
valores posicionais 17
aqui com as
.:li
2.6
Fundamentos da ciência da computação
RESUMO
• Um sistema de numeração (ou sistema numérico) é aquele que utiliza símbolos distintos para
representar um número.
• Em um sistema de numeração posicional, a posição que um símbolo ocupa no número determina o valor que ele representa. Cada posição tem
um valor posicional associado a ela.
• Um sistema de numeração não posicional utiliza uma quantidade limitada de símbolos, e cada
símbolo tem um valor. Contudo, a posição que
um símbolo ocupa no número normalmente não
tem relação com seu valor: o valor de cada símbolo normalmente é fixo.
• No sistema decimal, a base b é igual a 10 e utilizamos 10 símbolos para representar números. Os
símbolos neste sistema frequentemente
são chamados dígitos decimais ou simplesmente dígitos.
• No sistema binário, a base b é igual a 2 e utilizamos somente dois símbolos para representar
números. Os símbolos neste sistema frequentemente são chamados dígitos binários ou bus.
• Em um sistema hexadecimal, a base b é igual a 16
e utilizamos dezesseis símbolos para representar
números. Os símbolos neste sistema frequentemente são chamados dígitos hexadecimais.
2.7
• Em um sistema octal, a base b é igual a 8 e utilizamos oito símbolos para representar números.
Os símbolos neste sistema frequentemente
são
chamados dígitos oetais .
• Podemos converter um número de qualquer sistema para decimal. Multiplicamos cada dígito
com seu valor posicional no sistema original e
somamos os resultados para obter o número no
sistema decimal.
• Podemos converter um número decimal para
seu equivalente em qualquer base utilizando
dois procedimentos
diferentes; um para a parte integral e outro para a parte fracionária. A
parte integral precisa de repetidas divisões, e a
parte fracional precisa de repetidas multiplicações .
• A conversão do sistema binário para o sistema
hexadecimal e deste para o binário é muito fácil, porque quatro bits no sistema binário .são
representados
como um dígito no sistema hexadecimal.
• A conversão do sistema binário para o sistema
octal e deste para o binário é muito fácil, porque
três bits no sistema binário são representados
como um dígito no sistema octal.
CONJUNTO DE PRÁTICAS
Questões para revisão
Questões de múltipla escolha
1.
2.
11. A base do sistema
Defina um sistema de numeração.
Faça a distinção entre sistemas de numeração
posicionais e não posicionais.
3. Defina a base ou a raiz em um sistema de
numeração posicional. Qual é a relação entre
uma base e o número de símbolos em um sistema de numeração posicional?
4. Explique o sistema decimal. Por que ele é chamado decimal? Qual é a base nesse sistema?
5. Explique o sistema binário. Por que ele é chamado binário? Qual é a base nesse sistema?
6. Explique o sistema octal. Por que ele é chamado oetal? Qual é a base nesse sistema?
7. Explique o sistema hexadecimal. Por que ele
é chamado hexadecimal? Qual é a base nesse
sistema?
8. Por que é fácil converter de um sistema binário para um hexadecimal e vice-versa?
9. Quantos bits no sistema binário são representados por um dígito no sistema hexadecimal?
10. Quantos bits no sistema binário são representados por um dígito no sistema octal?
a.
b.
c.
de numeração
decimal
é
2
8
10
d. 16
12. A base do sistema
de numeração
binário é
a. 2
b. 8
c. 10
d. 16
13. A base do sistema de numeração octal é __
a. 2
b. 8
c. 10
d. 16
14. A base do sistema de numeração
é
_
a. 2
b. 8
c. 10
d. 16
hexadecimal
o
Sistemas de numeração
15. Ao converter um número inteiro decimal para
repetidamente por b.
base b,
a. Dividimos
b. Multiplicamos
c. (Nem a nem b)
d. (Alternativas a e b)
16. Ao converter uma fração decimal para base b,
repetidamente por b.
a. Dividimos
b. Multiplicamos
c. (Nem a nem b)
d. (Alternativas a e b)
17. Qual das seguintes representações está errada?
a. (10111)z
b. (349)8
C. (3AB)16
d. 256
18. Qual das seguintes representações está errada?
a. (10211)2
b. (342)8
c. (EEE)16
d. 145
19. Qual das seguintes representações está errada?
a. (111)z
b. (346)8
c. (EEG)16
d. 221
20. Qual das seguintes representações está errada?
a. (110)z
b. (141)8
c. (EF)16
d. 22A
2l. Qual das seguintes alternativas é equivalente a
12 em decimal?
a. (1110)2
b. (C)16
C. (15)8
d. (Nenhuma das anteriores)
22. Qual das seguintes alternativas é equivalente a
24 em decimal?
a. (11000)2
b. (1A) 16
C. (31)8
d. (Nenhuma das anteriores)
Exercícios
23. Converta os seguintes números binários em
decimais, sem utilizar uma calculadora, mostrando seu trabalho:
a. (01101)z
b. (1011000)2
c. (011110,Ol)z
d. (111111,111)2
24. Converta os seguintes números hexadecimais
em decimais, sem utilizar uma calculadora,
mostrando seu trabalho:
a. (AB2)16
b. (123)16
25.
26.
27.
28.
29.
30.
3l.
32.
••
c. (ABB)16
d. (35E,E1)16
Converta os seguintes números octais em
decimais, sem utilizar uma calculadora, mostrando seu trabalho:
a. (237)8
b. (2731)8
c. (617,7)8
d. (21,11)8
Converta os seguintes números decimais em
binários, sem utilizar uma calculadora, mostrando seu trabalho:
a. 1234
b. 88
C. 124,02
d. 14,56
Converta os seguintes números decimais em
octais, sem utilizar uma calculadora, mostrando seu trabalho:
a. 1156
b. 99
c. 11,4
d. 72,8
Converta os seguintes números decimais em
hexadecimais, sem utilizar uma calculadora,
mostrando seu trabalho:
a. 567
b. 1411
c. 12,13
d. 16,5
Converta os seguintes números octais em
hexadecimais, sem utilizar uma calculadora,
mostrando seu trabalho:
a. (514)8
b. (411h
C. (13,7)8
d. (1256)8
Converta os seguintes números hexadecimais
em octais, sem utilizar uma calculadora, mostrando seu trabalho:
a. (51A)16
b. (4E1)16
c. (BB'C)16
d. (ABC,D)16
Converta os seguintes números binários em
octais, sem utilizar uma calculadora, mostrando seu trabalho:
a. (01101)z
b. (1011000)z
c. (011110,01)2
d. (111111,l11)z
Converta os seguintes números binários em
hexadecimais, sem utilizar uma calculadora,
mostrando seu trabalho:
a. (01101)2
b. (1011000)z
c. (01111O,Ol)z
d. (111111,111)z
EI
Fundamentos da ciência da computação
33. Converta
os seguintes números
decimais
em binários, utilizando o método alternativo
discutido no Exemplo 2.17, mostrando seu
trabalho:
a. 121
b. 78
c. 255
d. 214
34. Converta
os seguintes números decimais em
binários, utilizando o método alternativo discutido no Exemplo 2.18, mostrando seu trabalho:
a. 3%
b. 123132
C. 413/64
d. 125/128
35. Em um sistema de numeração posicional com
base b, o maior número inteiro que pode ser
representado utilizando k dígitos é bk - I. Encontre o maior número em cada um dos seguintes sistemas com seis dígitos.
a. Binário
b. Decimal
c. Hexadecimal
d. Octal
36. Sem converter, encontre o número mínimo
de dígitos necessários no sistema de destino
para cada um dos seguintes casos:
a. Número decimal de cinco dígitos convertido para binário.
b. Número decimal de quatro dígitos convertido para octal.
c. Número decimal de sete dígitos convertido para hexadecimal.
37. Sem converter,
encontre o número mínimo
de dígitos necessários no sistema de destino
para cada um dos seguintes casos:
a. Número binário de 5 bits convertido para
decimal.
b. Número octal de 3 dígitos convertido para
decimal.
c. Número hexadecimal de 3 dígitos convertido para decimal.
38. A tabela a seguir mostra
como reescrever
uma fração, de modo que o denominador
seja uma potência de dois (I, 4, 8, 16, e assim por diante).
Original
I
Novo
I
Original
Novo
0,5
1/
0,25
1/4
0,125
1/8
0,0625
1/16
0,03125
2
1/
32
0,015625
i
I
1/64
Contudo, algumas vezes precisamos de uma
combinação de dados para encontrar a fração
apropriada. Por exemplo, 0,625 não está na
tabela, mas sabemos que ele é igual a 0,5 +
+0,125. Isso significa que 0,625 pode ser es-
crito como 1/2 + I/SOU 5/ S' Modifique as seguintes frações decimais para uma fração com
uma potência de 2.
a. 0,1875
b. 0,640625
c. 0,40625
d. 0,375
39. Utilizando
os resultados do problema anterior, converta os seguintes números decimais
em números binários.
a. 7,1875
b. 12,640625
c. 11,40625
d. 0,375
40. Descubra o valor máximo de um número inteiro em cada um dos seguintes casos:
a. b = 10, k = 10
b. b = 2, k = 12
c. b = 8, k = 8
d. b=16,k=7
41. Encontre
o número mínimo de bits exigidos
para armazenar os seguintes números inteiros:
a. Menos de 1.000
b. Menos de 100.000
c. Menos de 64
d. Menos de 256
42. Um número menor do que bk pode ser representado utilizando k dígitos na base b. Mostre
o número de dígitos necessários em cada um
dos seguintes casos.
a. Números inteiros menores do que 214 em
sistema binário.
b. Números inteiros menores do que 10s em
sistema decimal.
c. Números inteiros menores do que 813 em
sistema octal.
d. Números inteiros menores do que 164 em
sistema hexadecimal.
43. Uma base comum utilizada na Internet é
b = 256. Precisamos de 256 símbolos para
representar um número nesse sistema. Em
vez de criar essa grande quantidade de símbolos, os projetistas desse sistema utilizaram
números decimais para representar um símbolo: O a 255. Em outras palavras, o conjunto
de símbolos é S = {O, 1,2,3, ... 255}. Um
número nesse sistema sempre está no formato S],S2,S3.s4 com quatro símbolos e três
pontos que separam os símbolos. O sistema
é utilizado para definir endereços de Internet (veja o Capítulo 6). Um exemplo de um
endereço nesse sistema é 10.200.14.72, que
é equivalente a 10 x 2563 + 200 X 2562 +
+ 14 X 2561 + 72 x 2560 = 180.883.016, no
sistema decimal. Esse sistema de numeração
é chamado notação decimal pontuada.
Sistemas de numeração
Encontre o valor decimal de cada um dos seguintes endereços de Internet:
a. 17.234.34.14
b. 14.56.234.56
c. 110.14.56.78
d. 24.56.13.11
44. Os endereços de Internet descritos no problema anterior também são representados
como padrões binários. Nesse caso, 32 bits
são utilizados para representar um endereço, oito bits para cada símbolo na notação
decimal pontuada. Por exemplo, o endereço
10.200.14.72 também pode ser representado como 00001010 11001000 00001110
01001000. Mostre a representação em bits
dos seguintes endereços de Internet:
a. 17.234.34.14
b. 14.56.234.56
c. 110.14.56.78
d. 24.56.13.11
45. Escreva o equivalente decimal dos seguintes
números romanos:
a. XV
b. XXVII
c. VLIlI
d. MCLVII
46. Converta os seguintes números decimais em
números romanos:
a. 17
b. 38
c. 82
d. 999
47. Assinale quais dos seguintes números romanos não são válidos:
a. MMIM
b. MIC
c. CVC
d. VX
48. A civilização Maia inventou um sistema de
numeração posicional vigesimal (de base
20), chamado sistema de numeração Maia.
••
Eles adotaram a base 20 provavelmente porque utilizavam os dedos das mãos e dos pés
para contar. Esse sistema tem 20 símbolos
que são construídos a partir de três símbolos
mais simples. O recurso avançado do sistema
é que ele tem um símbolo para zero, que é
uma concha. Os outros dois símbolos são um
círculo (ou um seixo) para um, e uma barra
horizontal (ou uma vareta) para o cinco. Para
representar um número maior do que 19, os
numerais são escritos verticalmente. Pesquise na Internet para responder: quais são os
números decimais 12, 123, 452 e 1.256, no
sistema de numeração Maia?
49. À civilização Babilônica é creditado o desenvolvimento do primeiro sistema de numeração
posicional, chamado sistema de numeração
Babilônico. Eles herdaram o sistema de numeração dos Sumérios e o Acadiano, e desenvolveram o sistema posicional sexagesimal (de
base 60). Essa base ainda é utilizada, hoje em
dia, para tempos e ângulos. Por exemplo, uma
hora corresponde a 60 minutos, e um minuto
equivale a 60 segundos; de modo similar, um
grau corresponde a 60 minutos, e um minuto equivale a 60 segundos. Como um sistema
posicional com base b requer b símbolos (dígitos), esperamos que um sistema posicional
sexagesimal exija 60 símbolos. No entanto, os
Babilôníos não tinham um símbolo para zero,
e produziram os outros 59 símbolos juntando
dois, os utilizados para um e dez. Pesquise na
Internet para responder às seguintes perguntas:
a. Expresse os seguintes números decimais
em numerais Babilônicos: 11.291, 3.646,
3.582.
b. Mencione problemas que podem surgir
por não existir um símbolo para O. Descubra como o sistema de numeração Babilônico resolveu este problema.
Download