2 Sistemas de Numeração

Propaganda
FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO
REPRESENTAÇÃO DE DADOS E SISTEMAS DE NUMERAÇÃO
LUÍS PAULO REIS
LICENCIATURA EM CIÊNCIA DA INFORMAÇÃO
DISCIPLINA DE INFORMÁTICA BÁSICA - 1º ANO
SETEMBRO DE 2002
Representação de Dados e Sistemas de Numeração
ÍNDICE
ÍNDICE _____________________________________________________________________ 2
1
2
Bits & Bytes______________________________________________________________ 4
1.1
Bit _________________________________________________________________ 4
1.2
Byte ________________________________________________________________ 4
1.3
Múltiplos do Byte_____________________________________________________ 6
Sistemas de Numeração ____________________________________________________ 8
2.1
Números ____________________________________________________________ 8
2.2
Base de um Sistema de Numeração ______________________________________ 8
2.3
Representação Binária ________________________________________________ 8
2.4
Representação Octal e Hexadecimal ____________________________________ 10
2.4.1
Algumas questões típicas sobre sistemas de numeração ___________________ 11
3
Conversão de Números entre Bases Diferentes_________________________________ 12
3.1
Conversões entre as bases 2, 8 e 16 _____________________________________ 12
3.1.1
Conversão de Base.: Binária(Base 2) => Octal(Base 8) ___________________ 12
3.1.2
Conversão de Base.: Octal(Base 8) => Binária(Base 2) ___________________ 12
3.1.3
Conversão de Base.: Binária(Base 2) => Hexadecimal(Base 16) ____________ 12
3.1.4
Conversão de Base.: Hexadecimal(Base 16) => Binária(Base 2) ____________ 12
3.2
Outras conversões ___________________________________________________ 12
3.2.1
Conversão de Base.: Binário => Decimal ______________________________ 13
3.2.2
Conversão de Base.: Octal => Decimal________________________________ 13
3.2.3
Conversão de Base.: Hexadecimal => Decimal _________________________ 13
3.2.4
Conversão de Base.: Base Qualquer => Decimal ________________________ 14
3.3
Conversão de Números da Base 10 para uma Base b qualquer ______________ 14
3.3.1
Parte Inteira: ____________________________________________________ 14
3.3.2
Parte Fraccionária ________________________________________________ 15
4
3.4
Conversão de Números entre duas Bases quaisquer _______________________ 15
3.5
Exercícios Simples de Conversão de Números entre duas Bases _____________ 16
Aritmética Binária _______________________________________________________ 17
4.1
Adição _____________________________________________________________ 17
4.2
Subtracção _________________________________________________________ 17
4.3
Multiplicação _______________________________________________________ 18
4.4
Divisão_____________________________________________________________ 18
4.5
Aritmética Binária Complementar _____________________________________ 19
4.5.1
Algoritmos para determinação do Complemento ________________________ 19
4.5.2
Algoritmos para Subtracção ________________________________________ 20
5
Representação de Dados___________________________________________________ 21
5.1
Tipos de Dados ______________________________________________________ 21
5.2
Dados Numéricos ____________________________________________________ 21
Luís Paulo Reis / 2002
Pág. 2
Representação de Dados e Sistemas de Numeração
5.2.1
-2n-1+1 <= X <= 2n-1-1 _____________________________________________ 22
5.3
REPRESENTAÇÃO EM SINAL E MAGNITUDE________________________ 22
5.3.1
FAIXA DE REPRESENTAÇÃO ____________________________________ 22
5.4
ARITMÉTICA EM SINAL E MAGNITUDE ____________________________ 23
5.4.1
Algoritmo da Soma _______________________________________________ 23
5.4.2
Algoritmo da subtracção ___________________________________________ 23
5.5
REPRESENTAÇÃO DE NÚMEROS EM COMPLEMENTO ______________ 23
5.5.1
REPRESENTAÇÃO DE NÚMEROS POSITIVOS EM COMPLEMENTO___ 23
5.5.2
REPRESENTAÇÃO DE NÚMEROS NEGATIVOS EM COMPLEMENTO A
(BASE - 1) ______________________________________________________________ 23
5.5.3
FAIXA DE REPRESENTAÇÃO ____________________________________ 24
5.5.4
ARITMÉTICA EM COMPLEMENTO A (BASE - 1) ____________________ 25
5.5.5
REPRESENTAÇÃO DE NÚMEROS NEGATIVOS EM COMPLEMENTO A
BASE 25
5.5.6
FAIXA DE REPRESENTAÇÃO ____________________________________ 26
Exercício 1 – Sistemas de Numeração e Conversões de Base _________________________ 27
Exercícios - Representação de Dados e Aritmética Binária e Complementar ____________ 28
Tabela para auxílio nos cálculos de conversões ____________________________________ 29
Luís Paulo Reis / 2002
Pág. 3
Representação de Dados e Sistemas de Numeração
1 Bits & Bytes
1.1 Bit
Bit é a menor unidade de informação que um computador pode processar. é um minúscula célula de
informação dentro da memória RAM. Se nesta pequena célula não há passagem de corrente eléctrica, o
valor assumido é 0(zero). Se ali está passando energia eléctrica, então o valor assumido é 1(um). Como
visto, só existem dois estados possíveis para um bit, desligado ou ligado.
1
1.2 Byte
Byte é a unidade de informação que consegue representar um caracter. É composto de oito bits.
Caracter é qualquer letra(maiúscula ou minúscula) letra, símbolo, ou caracteres gráficos especiais.
10110010
Existe dentro do microprocessador uma tabela de caracteres chamada de Tabela ASCII(leia-se asqui-i).
Esta tabela possui 256 posições. Porque 256? É o número máximo de combinações possíveis com 8
bits. Para cada uma dessas 256 posições, existe um caractere associado. Veja a Tabela ASCII e seus
caracteres com seus códigos em decimal, octal e hexadecimal, logo abaixo.
Luís Paulo Reis / 2002
Pág. 4
Representação de Dados e Sistemas de Numeração
Os caracteres de 00010 até 03210 são caracteres de controle. Normalmente usados para indicar início de
arquivo, fim de linha, fim de arquivo, ou ainda, comandos de impressão como modo condensado, salto
de página, etc... Na tabela abaixo, encontram-se representados estes comandos:
Decimal Nome Descrição
000
NUL
Caracter Nulo (null)
001
SOH
Início de Cabeçalho (Start of Heading)
002
STX
Início de Texto (Start of Text)
003
ETX
Fim de Texto (End of Text)
004
EOT
Fim de Transmissão (End of Transmission)
Luís Paulo Reis / 2002
Pág. 5
Representação de Dados e Sistemas de Numeração
005
ENQ
Requisição (Enquiry)
006
ACK
Ciente (Acknowledge)
007
BEL
Campainha (Bell Audible Signal)
008
BS
Volta uma Posição (Backspace)
009
HT
Tabulação Horizontal (Horizontal Tabulation)
010
LF
Mudança de Linha (Line Feed)
011
VT
Tabulação Vertical (Vertical Tabulation)
012
FF
Alimentação de Formulário (Form Feed)
013
CR
Retorno do Carro (Carriage Return)
014
SO
Desliga Caixa Alta (Shift Out)
015
SI
Liga Caixa Alta (Shift In)
016
DLE
Escape de Linha de Dados (Data Link Escape)
017
DC1
Controle do Dispositivo nº 1 (Device Control 1)
018
DC2
Controle do Dispositivo nº 2 (Device Control 2)
019
DC3
Controle do Dispositivo nº 3 (Device Control 3)
020
DC4
Controle do Dispositivo nº 4 (Device Control 4)
021
NAK
Ciente Negativo (Negative Acknowledge)
022
SYN
Manter Sincronismo (Synchronous Idle)
023
ETB
Fim de Bloco de Transmissão (End of Transmission Block)
024
CAN
Cancelamento (Cancel)
025
EM
Fim de Suporte (End of Medium)
026
SUB
Substituição (Substitute)
027
ESC
Escape
028
FS
Separador de Arquivo (File Separator)
029
GS
Separador de Grupo (Group Separator)
030
RS
Separador de Registro (Record Separator)
031
US
Separador de Unidade (Unit Separator)
032
SP
Espaço em Branco (Space)
127
DEL
Delete
Os caracteres de 03310 até 04710 são símbolos como ponto, vírgula, ponto de exclamação, etc...
Os caracteres de 04810 até 05710 são os números.
Os caracteres de 05810 até 06410 são alguns outros caracteres especiais.
Os caracteres de 06510 até 09010 são as letras maiúsculas.
Os caracteres de 09110 até 09610 são alguns outros caracteres especiais.
Os caracteres de 09710 até 12210 são as letras minúsculas.
Os caracteres de 12310 até 25510 são algumas letras acentuadas, caracteres gráficos, etc...
1.3 Múltiplos do Byte
Kilobyte ou Kb corresponde a 1024 bytes. Porque 1024 e não 1000, como no caso do quilograma ou
quilómetro? Devido aos sistemas de numeração utilizados por nós e pelo computador. O sistema de o
computador utiliza é o sistema binário(2) e o que nós mais utilizamos é o decimal(10). Se pegarmos o
número 2 e elevarmos a 10º potência, chegaremos ao número acima. 210=1024.
Megabyte ou Mb corresponde a 1024 Kb.
Gigabyte ou Gb corresponde a 1024 Mb.
Luís Paulo Reis / 2002
Pág. 6
Representação de Dados e Sistemas de Numeração
Terabyte ou Tb corresponde a 1024 Gb.
Quadro Comparativo
Unidade
Qtd.
Tbytes
Qtd.
Gbytes
Qtd.
Mbytes
Qtd.
Kbytes
Qtd.
bytes
1
bit
1
byte
Mbyte
1
Gbyte
Luís Paulo Reis / 2002
1
1024
1
*
10242
10242
8
*
10243
10243
8
*
4
*
1024
1
10241
10241
10242
1024
2
1024
3
8
1
1
Kbyte
Tbyte
Qtd.
bits
1024
1
4
1024
8
1024
8
Pág. 7
Representação de Dados e Sistemas de Numeração
2 Sistemas de Numeração
2.1 Números
Acredita-se que a necessidade de criação de números veio com a necessidade de contar. Seja o número
de animais, alimentos, ou coisas do tipo. Como a evolução nos legou algumas características, como os
cinco dedos em cada mão (fingers) e cinco dedos em cada pé (toes), seria muito natural que os
primeiros sistemas de numeração fizessem uso das bases 10 (decimal) e 20 (vigesimal). O número 80,
em francês, escrito como quatre-vingt (ou, quatro vezes o vinte) é remanescente de um sistema
vigesimal.
O método ao qual estamos acostumados usa um sistema de numeração posicional. Isso significa que a
posição ocupada por cada algarismo em um número altera o seu valor de uma potência de 10(na base
10), para cada casa à esquerda. Por exemplo, no sistema decimal(base 10), no número 125 o algarismo
1 representa uma centena(100 = 102), o algarismo 2 representa duas dezenas(2 x 10 = 101) e o
0
algarismo 5 representa cinco unidades(5 x 10 ). Somando: 100 + 20 + 5 = 125. Vamos estudar neste
capítulo, algo sobre os sistemas de numeração mais usados na informática.
2.2 Base de um Sistema de Numeração
A base de um sistema de numeração qualquer, é a quantidade de algarismos disponível na
representação. A base 10 é hoje a mais usualmente empregada, embora não seja a única utilizada. No
comércio pedimos uma dúzia de rosas ou uma grosa de parafusos (base 12) e também marcamos o
tempo em minutos e segundos (base 60).
Os computadores utilizam a base 2 (sistema binário) e os programadores, por facilidade, usam em geral
uma base que seja uma potência de 2, tal como 24 (base 16 ou sistema hexadecimal) ou eventualmente
ainda 23 (base 8 ou sistema octal).
Na base 10, dispomos de 10 algarismos para a representação do número: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Na
base 2, seriam apenas 2 algarismos: 0 e 1. Na base 16, seriam 16: os 10 algarismos aos quais estamos
acostumados, mais os símbolos A, B, C, D, E e F, representando respectivamente 10, 11, 12, 13, 14 e
15 unidades. Generalizando, temos que uma base b qualquer disporá de b algarismos, variando entre 0
e (b-1).
A representação 125,3810 (base 10) significa 1x102 + 2x101 + 5x100 + 3x10-1 + 8x10-2 :
Generalizando, representamos uma quantidade N qualquer, numa dada base b, com um número tal
como segue:
n
2
1
0
-1
-2
-n
Nb = an.b + .... + a2.b + a1.b + a0.b + a-1.b + a-2.b + .... + a-n.b sendo que
an.bn + .... + a2.b2 + a1.b1 + a0.b0 é a parte inteira e
a-1.b-1 + a-2.b-2 + .... + a-n.b-n é a parte fraccionária.
Intuitivamente, sabemos que o maior número que podemos representar, com n algarismos, na base b,
será o número composto n vezes pelo maior algarismo disponível naquela base (ou seja, b-1). Por
exemplo, o maior número que pode ser representado na base 10 usando 3 algarismos será 999 (ou seja,
103 - 1 = 999).
Generalizando, podemos ver que o maior número inteiro N que pode ser representado, em uma dada
base b, com n algarismos (n "casas"), será N = bn - 1. Assim, o maior número de 2 algarismos na base
16 será FF16 que, na base 10, equivale a 25510 = 162 - 1.
2.3 Representação Binária
Os computadores modernos utilizam apenas o sistema binário, isto é, todas as informações
armazenadas ou processadas no computador usam apenas DUAS grandezas, representadas pelos
algarismos 0 e 1. Essa decisão de projecto deve-se à maior facilidade de representação interna no
Luís Paulo Reis / 2002
Pág. 8
Representação de Dados e Sistemas de Numeração
computador, que é obtida através de dois diferentes níveis de tensão. Havendo apenas dois algarismos,
portanto dígitos binários, o elemento mínimo de informação nos computadores foi apelidado de bit (uma
contracção do inglês binary digit).
Na base 2, o número "10" vale dois. Mas se 102 = 210, então dez é igual a dois?
Não, dez não é e nunca será igual a dois!
Na realidade, "10" não significa necessariamente "dez". Nós estamos acostumados a associar "10" a
"dez" porque estamos acostumados a usar o sistema de numeração decimal. O número
•
102 seria lido "um-zero" na base 2 e vale 210 (convertido para "dois" na base dez),
•
105 seria lido "um-zero" na base 5 e vale 510 (convertido para "cinco" na base dez),
•
1010 pode ser lido como "um-zero" na base 10 ou então como "dez" na base dez,
•
1016 seria lido "um-zero" na base 16 e vale 1610 (convertido para "dezasseis" na base dez), etc.
Portanto, 10 só será igual a dez se - e somente se - o número estiver representado na base dez!
Uma curiosidade: o número "10b" vale sempre igual à base, porque em uma dada base b os algarismos
possíveis vão sempre de 0 a (b - 1)! Como o maior algarismo possível em uma dada base b é igual a (b1), o próximo número será (b - 1 + 1 = b) e portanto será sempre 10 e assim, numa dada base
qualquer, o valor da base será sempre representado por "10"!
Obs.: Toda vez que um número for apresentado sem que seja indicado em qual sistema de numeração
ele está representado, estenderemos que a base é dez. Sempre que outra base for utilizada, a base será
obrigatoriamente indicada.
Um dia pode ser que os computadores se tornem obrigatórios e sejamos todos forçados por lei a estudar
a aritmética em binário! Mas, mesmo antes disso, quem programa computadores precisa conhecer a
representação em binário! Vamos começar entendendo as potências de dois (calma, isso é só o começo,
depois piora!):
Rep. Binária
Potência
1
10
100
1
1
2
2
4
2
2
3
8
4
16
5
32
6
64
7
128
8
256
9
512
10
1024
11
2048
12
4096
13
8192
1000
2
10000
2
100000
2
1000000
2
10000000
2
100000000
2
1000000000
10000000000
2
2
100000000000
2
1000000000000
2
10000000000000
Rep. Decimal
0
2
2
Depois (e só depois) de compreender bem a tabela acima, fazendo a devida correlação com a
representação decimal, é conveniente decorar (aaaaaarrrrrrggggggghhhhhh!!!!!) os valores da tabela. As
conversões entre base dois e base dez e as potências de dois são utilizadas a todo momento e seria
perda de tempo estar toda hora convertendo. Da mesma forma que, uma vez entendido o mecanismo da
multiplicação, decoramos a tabuada, é muito mais efectivo saber de cor a tabela acima que fazer as
contas de conversão toda vez que for necessário.
A representação binária é perfeitamente adequada para utilização pelos computadores. No entanto, um
número representado em binário apresenta muitos bits, ficando longo e passível de erros quando
manipulado por seres humanos normais como por exemplo os programadores, analistas e engenheiros
de sistemas (bem, não tão normais assim ...). Para facilitar a visualização e manipulação por
programadores de grandezas processadas em computadores, são usualmente adoptadas as
representações octal (base 8) e principalmente hexadecimal (base 16). Ressaltamos mais uma vez que
Luís Paulo Reis / 2002
Pág. 9
Representação de Dados e Sistemas de Numeração
o computador opera apenas na base 2 e as representações octal e hexadecimal não são usadas no
computador, elas se destinam apenas à manipulação de grandezas pelos programadores.
2.4 Representação Octal e Hexadecimal
Em projectos de informática (isto é, nos trabalhos realizados pelos programadores, analistas e
engenheiros de sistemas), é usual representar quantidades usando sistemas em potências do binário
(octal e principalmente hexadecimal), para reduzir o número de algarismos da representação e
consequentemente facilitar a compreensão da grandeza e evitar erros. No sistema octal (base 8), cada
três bits são representados por apenas um algarismo octal (de 0 a 7). No sistema hexadecimal (base
16), cada quatro bits são representados por apenas um algarismo hexadecimal (de 0 a F).
A seguir, apresentamos uma tabela com os números em decimal e sua representação correspondente
em binário, octal e hexadecimal:
Binária(2) Octal(8) Decimal(10) Hexadecimal(16)
0
0
0
0
1
1
1
1
10
2
2
2
11
3
3
3
100
4
4
4
101
5
5
5
110
6
6
6
111
7
7
7
1000
10
8
8
1001
11
9
9
1010
12
10
A
1011
13
11
B
1100
14
12
C
1101
15
13
D
1110
16
14
E
1111
17
15
F
10000
20
16
10
10001
21
17
11
10010
22
18
12
10011
23
19
13
10100
24
20
14
10101
25
21
15
10110
26
22
16
10111
27
23
17
11000
30
24
18
Nota: a base 16 ou sistema hexadecimal pode ser indicada também por um "H" ou "h" após o número;
por exemplo: FFH significa que o número FF (ou 255 em decimal) está em hexadecimal. Não confundir o
"H" ou "h" com mais um dígito, mesmo porque em hexadecimal só temos algarismos até "F" e portanto
não existe um algarismo "H".
Exemplo: Como seria a representação do número 1610 em binário, octal e hexadecimal?
Solução: Seria respectivamente 100002, 208 e 1016.
De acordo com a tabela acima, o número decimal 20 é representado por 2010, isto é, escreve-se o
número e um índice indicando a base em que está representado. Geralmente, a base é o número de
Luís Paulo Reis / 2002
Pág. 10
Representação de Dados e Sistemas de Numeração
dedos com os quais temos que contar as coisas. Por exemplo, para se contar algo no sistema
hexadecimal(Base 16), temos que usar dezasseis dedos. Tem-se portanto a seguinte equivalência:
101002 = 248 = 2010 = 1416
2.4.1 Algumas questões típicas sobre sistemas de numeração
1.
2.
3.
4.
5.
Qual o decimal equivalente a 110110112?
Qual o octal equivalente a 110110112?
Qual o hexadecimal equivalente a 110110112?
Qual o binário equivalente à sua idade? Qual seus equivalentes octal, decimal e hexadecimal?
Qual o maior binário que pode ser representado por uma série de 16 bits? Qual seus
equivalentes octal, decimal e hexadecimal?
Luís Paulo Reis / 2002
Pág. 11
Representação de Dados e Sistemas de Numeração
3 Conversão de Números entre Bases
Diferentes
3.1 Conversões entre as bases 2, 8 e 16
As conversões mais simples são as que envolvem bases que são potências entre si.
3.1.1 Conversão de Base.: Binária(Base 2) => Octal(Base 8)
Vamos exemplificar com a conversão entre a base 2 e a base 8. Como 23 = 8, separando os bits de um
número binário em grupos de três bits (começando sempre da direita para a esquerda!) e convertendo
cada grupo de três bits para seu equivalente em octal, teremos a representação do número em octal. Por
exemplo:
101010012 => 10.101.0012 Separando em grupos de 3, da direita p/ esquerda.
2518
Sabemos que 0102
= 28 ; 1012 = 58 ; 0012 = 18
portanto 101010012 = 2518
3.1.2 Conversão de Base.: Octal(Base 8) => Binária(Base 2)
Vamos fazer agora a operação inversa. Iremos exemplificar com a conversão entre a base 8 e a base 2.
Devemos pegar cada dígito octal e convertendo para o binário, teremos a representação do número. Por
exemplo:
32578 => 011.010.101.1112 Convertendo cada dígito octal em 3 dígitos binários.
3.1.3 Conversão de Base.: Binária(Base 2) => Hexadecimal(Base 16)
Vamos agora exemplificar com uma conversão entre as bases 2 e 16. Como 24 = 16, basta separarmos
em grupos de 4 bits (começando sempre da direita para a esquerda!) e converter. Por exemplo:
110101011012 => 110.1010.11012
6AD16
Separando em grupos de 4,
da direita p/ esquerda.
Sabemos que 1102
= 616 ; 10102 = A16 ; 11012 = D16
portanto 110101011012 = 6AD16
3.1.4 Conversão de Base.: Hexadecimal(Base 16) => Binária(Base 2)
Vamos fazer novamente a operação inversa da anterior. Iremos exemplificar com a conversão entre a
base 16 e a base 2. Devemos pegar cada dígito hexadecimal e convertendo para o binário, teremos a
representação do número. Por exemplo:
cada dígito
4CF616 => 0100 . 1100 . 1111 . 01102 Convertendo
hexadecimal em 4 dígitos binários.
3.2 Outras conversões
Vamos agora exercitar outras conversões. Quanto seria 3F5h(h = Base 16) em octal? O método mais
prático seria converter para binário e em seguida para octal.
Luís Paulo Reis / 2002
Pág. 12
Representação de Dados e Sistemas de Numeração
3F516
=> 11 . 1111 . 01012
Convertendo cada dígito
hexadecimal em 4 dígitos binários.
Separando em grupos de 3,
11111101012 => 1 . 111 . 110 . 1012 da
direita p/ esquerda.
Sabemos que 12
17658
Portanto 3F516
= 18 ; 1112 = 78 ; 1102 = 68 ; 1012 = 58
= 11111101012 = 17658
3.2.1 Conversão de Base.: Binário => Decimal
A primeira operação que iremos realizar de conversão entre bases é a de Binária(Base 2) para
Decimal(Base 10). Tomemos um número Binário qualquer, por exemplo.: 10101011. Faremos então o
seguinte:
128 64 32 16 8 4 2 1
7
2
2
6
5
2
4
2
(1 * 1) + (1 * 2) + (0 * 4) + (1 * 8) + (0 * 16) + (1 * 32) + (0 * 64) + (1 * 128) =
3
2
1
0
2 2 2 2 = 1 + 2 + 8 + 32 + 128 = 169
Portanto.: 101010112 = 16910
1 0101011
Outro exemplo com um número binário maior.:
2048 1024 512 256 128 64 32 16 8 4 2 1 (1 * 1) + (1 * 2) + (0 * 4) + (1 * 8) + (1 * 16) + (0 * 32) +
211 210 29 28 27 26 25 24 23 22 21 20 (0 * 64) + (1 * 128) + (0 * 256) + (0 * 512) + (1 * 1024)
+ (1 * 2048) =
= 1 + 2 + 8 + 16 + 128 + 1024 + 2048 = 3227
Portanto.: 1100100110112 = 322710
1 1 0 0 1 0011011
3.2.2 Conversão de Base.: Octal => Decimal
A próxima operação que iremos realizar de conversão entre bases é a de Octal(Base 8) para
Decimal(Base 10). Tomemos um número Octal qualquer, por exemplo.: 1324. Faremos então o seguinte:
512 64 8 1
3
8
2
8
(4 * 1) + (2 * 8) + (3 * 64) + (1 * 512) =
1
0
8 8 = 4 + 16 + 192 + 512 = 724
Portanto.: 13248 = 72410
1 324
Outro exemplo com um número octal maior.: 123456
32768 4096 512 64 8 1
5
4
3
8
8
2
(6 * 1) + (5 * 8) + (4 * 64) + (3 * 512) + (2 * 4096) + (1 * 32768) =
1
0
8 8 = 6 + 40 + 256 + 1536 + 8192 + 32768 = 42798
Portanto.: 1234568 = 4279810
8
8
1
2 3 456
3.2.3 Conversão de Base.: Hexadecimal => Decimal
A operação seguinte que iremos realizar de conversão entre bases é a de Hexadecimal(Base 16) para
Decimal(Base 10). Tomemos um número Hexadecimal qualquer, por exemplo.: 1111. Faremos então o
seguinte:
4096 256 16 1
(1 * 1) + (1 * 16) + (1 * 256) + (1 * 4096) =
162 161 160 = 1 + 16 + 256 + 4096 = 4369
Portanto.: 111116 = 436910
163
1 1 1 1
Outro exemplo com um número hexadecimal um pouco maior.: 2B0F
4096 256 16 1
3
16
Luís Paulo Reis / 2002
2
16
(15 * 1) + (0 * 16) + (11 * 256) + (2 * 4096) = A = 10
B = 11
16 16 = 15 + 0 + 2816 + 8192 = 11023
1
0
Pág. 13
Representação de Dados e Sistemas de Numeração
2 B 0 F
Portanto.: 2B0F16
= 1102310
C = 12
D = 13
E = 14
F = 15
Outro exemplo com um número hexadecimal diferente.: ACDE
4096 256 16 1
16
3
2
16
A = 10
B = 11
(14
*
1)
+
(13
*
16)
+
(12
*
256)
+
(10
*
4096)
=
16 16
C = 12
= 14 + 208 + 3072 + 40960 = 44254
D = 13
Portanto.: ACDE16 = 4425410
E = 14
F = 15
1
0
A C DE
3.2.4 Conversão de Base.: Base Qualquer => Decimal
Vamos relembrar a expressão já apresentada:
n
2
1
0
-1
-2
Nb = an.b + .... + a2.b + a1.b + a0.b + a-1.b + a-2.b + .... + a-n.b
-n
A melhor forma de fazer a conversão é usando essa expressão. Tomando como exemplo o número
1011012, vamos calcular seu valor representado na base dez. Usando a expressão acima, fazemos:
1011012 = 1x25 + 0x24 + 1x23 + 1x22 + 0x21 + 1x20 = 32 + 0 + 8 + 4 + 0 + 1 = 4510
Podemos fazer a conversão de números em qualquer base para a base 10 usando o algoritmo acima.
Exemplos:
a) Converter 4F5h para a base 10 .
Solução: Lembramos que o H significa que a representação é hexadecimal (base 16). Sabemos ainda
2
1
0
que F16=1510. Então: 4x16 + 15x16 + 5x16 = 4x256 + 15x16 + 5 = 1024 + 240 + 5 = 126910
b) Converter 34859 para a base 10.
Solução: 3x93 + 4x92 + 8x91 + 5x90 = 3x729 + 4x81 + 8x9 + 5 = 2187 + 324 + 72 + 5 = 258810.
c) Converter 7G16 para a base 10.
Solução: Uma base b dispõe dos algarismos entre 0 e (b-1). Assim, a base 16 dispõe dos algarismos 0 a
F e portanto o símbolo G não pertence à representação hexadecimal.
d) Converter 1001,012 para a base 10.
Solução: 1x23 + 0x22 + 0x21 + 1x20 + 0x2-1 + 1x2-2 = 8 + 0 + 0 + 1 + 0 + 0,25 = 9,2510
e) Converter 34,35 para a base 10.
1
0
-1
Solução: 3x5 + 4x5 + 3x5 = 15 + 4 + 0,6 = 19,610
f) Converter 38,38 para a base 10.
Solução: Uma base b dispõe dos algarismos entre 0 e (b-1). Assim, a base 8 dispõe dos algarismos 0 a
7 e portanto o algarismo 8 não existe nessa base. A representação 38,3 não existe na base 8.
3.3 Conversão de Números da Base 10 para uma Base b qualquer
A conversão de números da base dez para uma base qualquer emprega algoritmos que serão o inverso
dos acima apresentados. Os algoritmos serão melhor entendidos pelo exemplo que por uma descrição
formal. Vamos a seguir apresentar os algoritmos para a parte inteira e para a parte fraccionária:
3.3.1 Parte Inteira:
O número decimal será dividido sucessivas vezes pela base; o resto de cada divisão ocupará
sucessivamente as posições de ordem 0, 1, 2 e assim por diante até que o resto da última divisão (que
resulta em quociente zero) ocupe a posição de mais alta ordem. Veja o exemplo da conversão do
número 1910 para a base 2:
19 | 2
Luís Paulo Reis / 2002
9 | 2
4 | 2
2 | 2
1 | 2
Pág. 14
Representação de Dados e Sistemas de Numeração
a0=1
+---9
Portanto.: 1910
a1=1
+---4
a2=0
+---2
a3=0
+---1
a4=1
+---0
= 100112
Experimente fazer a conversão contrária (retornar para a base 10) e ver se o resultado está correcto.
3.3.2 Parte Fraccionária
Se o número for fraccionário, a conversão se fará em duas etapas distintas: primeiro a parte inteira e
depois a parte fraccionária. Os algoritmos de conversão são diferentes. O algoritmo para a parte
fraccionária consiste de uma série de multiplicações sucessivas do número fraccionário a ser convertido
pela base; a parte inteira do resultado da primeira multiplicação será o valor da primeira casa fraccionária
e a parte fraccionária será de novo multiplicada pela base; e assim por diante, até o resultado dar zero
ou até encontrarmos o número de casas decimais desejado. Por exemplo, vamos converter 15,6510 para
a base 2, com 5 e com 10 algarismos fraccionários:
15 | 2
+---a0=1
7
Parte Inteira.: 1510
7 | 2
+---a1=1
3
3 | 2
+---a2=1
1
= 11112
1 | 2
+---a3=1
0
0,65 x 2 = 1,3 0,8 x 2 = 1,6
0,3 x 2 = 0,6
0,6 x 2 = 1,2
0,6 x 2 = 1,2
0,2 x 2 = 0,4
0,2 x 2 = 0,4
0,4 x 2 = 0,8
0,4 x 2 = 0,8
0,8 x 2 = 1,6
Obs.: Em ambos os casos, a conversão foi interrompida quando encontramos o número de algarismos
fraccionários solicitadas no enunciado. No entanto, como não encontramos resultado 0 em nenhuma das
multiplicações, poderíamos continuar efectuando multiplicações indefinidamente até encontrar (se
encontrarmos) resultado zero. No caso de interrupção por chegarmos ao número de dígitos especificado
sem encontramos resultado zero, o resultado encontrado é aproximado e essa aproximação será função
do número de algarismos que calcularmos. Fazendo a conversão inversa, encontraremos:
Com 5 algarismos fraccionários:
Parte inteira: 11112
= 1510
Parte fraccionária: 0,101002 = 1x2 + 0x2 + 1x2 + 0x2 + 0x2 = 0,5 + 0,125 = 0,62510
-1
-2
-3
-4
-5
Com 10 algarismos fraccionários:
Parte inteira: 11112
= 1510
Parte fraccionária: 0,10100110012 =
= 1x2-1 + 0x2-2 + 1x2-3 + 0x2-4 + 0x2-5 + 1x2-6 + 1x2-7 + 0x2-8 + 0x2-9 + 1x2-10 =
= 1/2 + 1/8 + 1/64 + 1/128 + 1/1024 =
= 0,5 + 0,125 + 0,015625 + 0,0078125 + 0,0009765625 = 0,649414062510
Ou seja, podemos verificar (sem nenhuma surpresa) que, quanto maior número de algarismos forem
considerados, melhor será a aproximação.
3.4 Conversão de Números entre duas Bases quaisquer
Para converter números de uma base b para uma outra base b’ quaisquer (isso é, que não sejam os
casos particulares anteriormente estudados), o processo prático utilizado é converter da base b dada
para a base 10 e depois da base 10 para a base b’ pedida.
Exemplo: Converter 435 para Base 9.
435 = (4 x 5 + 3)10 = 2310 ==> 23/9 = 2 (resto 5) logo 435 = 2310 = 259
Luís Paulo Reis / 2002
Pág. 15
Representação de Dados e Sistemas de Numeração
3.5 Exercícios Simples de Conversão de Números entre duas Bases
Exercício 1: Converta o número1101012 para decimal
Solução: 1101012 = 5310
Exercício 2: Converta o número 1011101012 para decimal.
Solução: 1011101012 = 37310
Exercício 3: Converta o número FFFF16 para decimal
Solução: FFFF16 = 6553510
Exercício 4: Converta o número 0A1216 para decimal
Solução: 0A1216 = 257810
Exercício 5: Converta o número 3276810 para binário
Solução: 3276810 = 10000000000000002
Exercício 6: Converta o número 67810 para binário
Solução: 67810 = 10101001102
Exercício 7: Converta o número 67810 para hexadecimal
Solução: 67810 = 2A616
Exercício 8: Converta o número 6553510 para hexadecimal
Solução: 6553510 = FFFF16
Tabela Decimal Binário Hexadecimal
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Luís Paulo Reis / 2002
Binário
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Hexadecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Pág. 16
Representação de Dados e Sistemas de Numeração
4 Aritmética Binária
4.1 Adição
A "tabuada" da soma aritmética no sistema de numeração binário é muito simples. São poucas regras:
0
0
1
1
1
+
+
+
+
+
0
1
0
1
1 + 1
Exemplo:
=
=
=
=
=
0
1
1
0
0
(e "vai um" p/ o dígito de ordem superior)
(e "vai um" p/ o dígito de ordem superior)
Efectuar 011100 + 011010
Obs.: 1) Lembre-se: soma-se as colunas da direita para a esquerda, tal como uma soma em decimal.
Obs.: 2) No exemplo, são usadas, em sequência, da direita para a esquerda, todas as regas acima.
Obs.: 3) Na primeira linha, em azul, é indicado o "vai um".
Obs.: 4) Por simplicidade, no exemplo estamos a considerar dois números positivos.
Exemplo:
11
=> "vai um"
011100
+ 011010
--------= 110110
4.2 Subtracção
Vamos ver agora a "tabuada" da subtracção no sistema de numeração binário.
São poucas regras:
0
0
1
1
-
0
1
0
1
=
=
=
=
0
1
1
0
(e "vem um" do dígito de ordem superior)
Obs.: Como é impossível tirar 1 de zero, o artifício é "pedir emprestado" 1 da casa de ordem superior.
Ou seja, na realidade o que se faz é subtrair 1 de 10 e encontramos 1 como resultado, devendo então
subtrair 1 do dígito de ordem superior (aquele 1 que se "pediu emprestado"). Vamos lembrar que esse
algoritmo é exactamente o mesmo da subtracção em decimal a que já estamos acostumados desde o
curso primário.
Exemplo:
Efectuar 111100 - 011010
Obs.: 1) Lembre-se: subtrai-se as colunas da direita para a esquerda, tal como uma subtracção em
decimal.
Obs.: 2) No exemplo, são usadas, em sequência, da direita para a esquerda, todas as regras acima.
Obs.: 3) Na primeira linha, em vermelho, é indicado o "vem um".
Obs.: 4) Por simplicidade, no exemplo estamos considerando os dois números positivos.
Exemplo:
02
=> "vem um"
Luís Paulo Reis / 2002
Pág. 17
Representação de Dados e Sistemas de Numeração
111100
- 011010
--------= 100010
4.3 Multiplicação
Vamos ver agora a "tabuada" da multiplicação no sistema de numeração binário. São poucas regras:
0
0
1
1
*
*
*
*
0
1
0
1
=
=
=
=
0
0
0
1
Obs.: Vamos lembrar que esse algoritmo é exactamente o mesmo na multiplicação em decimal a que já
estamos acostumados desde o curso primário.
Exemplo:
Efectuar 101101 * 10
Obs.: 1) Lembre-se: multiplica-se as colunas da direita para a esquerda, tal como uma multiplicação em
decimal.
Obs.: 2) No exemplo, são usadas, em sequência, da direita para a esquerda, todas as regras acima.
Obs.: 3) Por simplicidade, no exemplo estamos considerando os dois números positivos.
Exemplo:
101101
*
10
--------= 000000 Todo número multiplicado por zero dá zero.
101101+
--------1011010
Faça a prova real. Converta os dois números (101101 e 10) para decimal e multiplique-os. Converta o
resultado (1011010) para decimal também e compare os resultados.
4.4 Divisão
Para fazermos a divisão binária, devemos proceder da seguinte maneira: Subtrair o Divisor do Dividendo
até obtermos resto = 0 ou até o resto não pode ser mais subtraído do divisor.
Exemplo: 1011012 / 112 ou 18210 / 310
101101
-11
101010
-11
100111
-11
100100
-11
100001
-11
11110
-11
11011
-11
11000
-11
10101
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
Luís Paulo Reis / 2002
Pág. 18
Representação de Dados e Sistemas de Numeração
-11
10010 (9)
-11
1111 (10)
-11
1100 (11)
-11
1001 (12)
-11
110 (13)
-11
11 (14)
-11
0 (15)
O Resultado portanto é 15 (11112) e o resto é 0.
Para fazermos a divisão, tanto em binário quanto em octal ou hexadecimal, uma outra maneira simples
de fazê-lo, é convertendo o dividendo e o divisor para decimal. Faz-se a divisão entre os dois números.
Por último pegamos o quociente e o resto e convertemos novamente para a base inicial, seja ela binária,
octal ou hexadecimal.
Exemplo:
Efectuar 43A216 / C216
43A216 = 1731410
C216 = 19410
17314 | 194
+---------1552
8 9 , 2 4 7 . . . . .
---1794
1746
---480
388
---920
776
---1440
1358
---82
Vamos converter agora, 89,247... p/ Hexadecimal. 89,24710 = 59,nnn16
4.5 Aritmética Binária Complementar
4.5.1 Algoritmos para determinação do Complemento
Para determinar o complemento binário de um número qualquer, basta todos os zeros por uns, e viceversa e adicionar 1. Na figura abaixo vemos o exemplo para determinar o complemento binário do
número 100102.
Luís Paulo Reis / 2002
Pág. 19
Representação de Dados e Sistemas de Numeração
4.5.2 Algoritmos para Subtracção
A implementação do algoritmo da subtracção em computadores é complexa, requerendo vários testes.
Assim, em computadores a subtracção em binário é feita por um artifício. O método utilizado é o "Método
do Complemento a Base" que consiste em encontrar o complemento do número em relação à base e
depois somar os números. Os computadores funcionam sempre na base 2, portanto o complemento à
base será complemento a dois. Computadores encontram o complemento a dois de um número através
de um algoritmo que pode ser assim descrito:
* Se o número é positivo, mantenha o número (o complemento de um número positivo é o próprio
número).
* Se o número é negativo:
* inverta o número negativo ou o subtraindo na subtracção (todo 1 vira zero, todo zero vira um);
* some 1 ao número em complemento;
* some as parcelas (na subtracção, some o minuendo ao subtraendo);
* se a soma em complemento acarretar "vai-um" ao resultado (ignore o transporte final);
Como exemplo, vamos usar o algoritmo acima na subtracção 1101 - 1100 = 0001
(1) mantém o minuendo
--->
1101
(2) inverte o subtraendo
--->
0011
(3) soma minuendo e subtraendo ---> 10000
(4) soma 1
(5) ignora o "vai-um"
---> 10001
---> 0001
A tabuada da multiplicação já foi vista anteriormente. No entanto, também a multiplicação em
computadores é feita por um artifício: para multiplicar um número A por n, basta somar A com A, n
vezes. Por exemplo, 4 x 3 = 4 + 4 + 4. E a divisão também pode ser feita por subtracções sucessivas! O
que concluímos? Que qualquer operação aritmética pode ser realizada em computadores apenas
através de somas (directas ou em complemento)!
Vamos ver agora, como fazer essa multiplicação através de somas sucessivas. Vamos multiplicar 101 x
100. Lembremos que 1002 = 410.
Assim como a multiplicação pode ser feita através de somas sucessivas, a divisão pode ser obtida
através de subtracções sucessivas. A divisão será feita com essas subtracções sucessivas até obtermos
um resultado zero na subtracção. Veja o exemplo de como dividir 10000 por 1000.
O resultado é 210 = 102.
Luís Paulo Reis / 2002
Pág. 20
Representação de Dados e Sistemas de Numeração
5 Representação de Dados
Em um computador são armazenados e processados apenas dados e instruções. Um programa de
computador é formado por uma sequência de instruções que operam sobre um conjunto de dados (os
dados são os operandos das instruções - ver capítulo sobre Representação de Instruções). Um
computador executa operações sobre dados numéricos (os números) ou alfabéticos (letras e símbolos).
Por outro lado, um computador somente opera sobre valores representados em notação binária, isto é,
somente "entende" bits - uns e zeros. Assim, os dados precisam ser representados no computador (na
memória e no processador) sempre através de bits, de uma forma que o computador possa interpretar
correctamente o seu significado e executar as operações adequadas.
Em outras palavras, isso significa que é preciso definir uma forma de representar os dados, codificados
em uns e zeros, que possam ser interpretados pelo computador, de forma correcta e eficiente (com bom
desempenho e pouco consumo de memória).
5.1 Tipos de Dados
Um programa (a sequência de instruções) deverá manipular diferentes tipos de dados.
Os dados podem ser:
*numéricos
*ponto fixo (números inteiros)
*ponto flutuante (números reais ou fraccionários)
*BCD (representação decimal codificada em binário)
*alfabéticos
*letras, números e símbolos (codificados em ASCII e EBCDIC)
O tipo de dado que está sendo fornecido ao programa deverá ser informado pelo programador, através
de declarações, fazendo com que o programa interprete o dado fornecido de acordo com a declaração.
Por exemplo, na linguagem C, declarações tipo.:
int num; (inteiro) ou
float sal (real);
indicam que a variável num é um número inteiro (int) e a variável sal é um número real (float),
representação científica, isto é, representado na forma [(Sinal) Valor x Base (elevada a Expoente)].
Declarações tipo char letra; indicam que a variável é um caractere.
5.2 Dados Numéricos
A forma mais intuitiva de representar números seria através da conversão do número decimal para seu
correspondente em binário. Como os computadores operam sempre em binário, essa seria a forma mais
imediata e eficiente.
Os números podem ser positivos ou negativos. Um aspecto primordial a ser definido seria então como
representar o sinal. Nesta representação foi definida a utilização de mais um bit na representação (o bit
mais representativo), representando o sinal, com a seguinte convenção:
bit 0 ==> sinal positivo bit 1 ==> sinal negativo.
A seguir, apresentamos exemplos de números e sua representação em binário:
Valor Decimal Valor Binário com 8 bits (7 bits + 1 bit de sinal)
+9
00001001 - bit inicial 0 => +
-9
10001001 - bit inicial 0 => -
Luís Paulo Reis / 2002
Pág. 21
Representação de Dados e Sistemas de Numeração
+127
01111111 - bit inicial 0 => -
-127
1111111 - bit inicial 0 => -
Assim, uma representação em binário com n bits teria disponíveis para a representação do número n-1
bits (o bit mais significativo representa o sinal). Essa representação tem o nome de representação em
sinal e magnitude.
Denomina-se amplitude ou faixa ( range ) de representação num determinado método o conjunto de
números que podem ser nele representados. Para o sistema módulo e sinal, a faixa de representação
para N dígitos é de:
5.2.1 -2n-1+1 <= X <= 2n-1-1
REPRESENTAÇÃO DE NÚMEROS INTEIROS (PONTO FIXO)
Dados numéricos ponto fixo são números inteiros, isto é, sem parte fraccionária.
Os dados NUMÉRICOS INTEIROS POSITIVOS são sempre representados com o sinal (convencionado
que bit mais significativo 0 = sinal positivo) e em seguida o valor do dado em binário.
Porém, devido à complexidade dos algoritmos para os computadores operarem com NÚMEROS
NEGATIVOS quando se usa a representação em sinal e magnitude (acima sumariamente apresentada),
são comumente adoptadas outras formas que facilitam e tornam mais eficiente a manipulação de
operações aritméticas em computadores: as representações em complemento.
Vamos analisar cada uma dessas representações.
5.3 REPRESENTAÇÃO EM SINAL E MAGNITUDE
A magnitude (isto é, o valor absoluto, que independe de sinal) de um número é representada em
binário. O sinal é representado por um bit (o bit mais significativo, isto é, o bit mais à esquerda na
representação). Por convenção, o bit de sinal 0 (zero) significa que o número é positivo e o bit 1
representa número negativo.
O valor dos bits usados para representar a magnitude independe do sinal, isto é, sendo o número
positivo ou negativo, a representação binária da magnitude será a mesma, o que varia é apenas o bit de
sinal.
Ex.:
0011 = +3
1011 = -3
(011 equivale ao valor absoluto 3)
5.3.1 FAIXA DE REPRESENTAÇÃO
n
A representação na base b em sinal e magnitude com n bits (incluindo o bit de sinal) possui b
representações e permite representar bn -1 valores, de vez que há duas representações para o zero.
A faixa de representação de uma representação na base 2 em sinal e magnitude com n bits (incluindo o
bit de sinal) possui.:
n
n-1
n-1
* 2 representações, representando os valores entre - ( 2 -1) e + ( 2 -1).
* O maior valor inteiro positivo será então + ( 2n-1-1) e o menor valor inteiro negativo será - ( 2n-1-1).
Luís Paulo Reis / 2002
Pág. 22
Representação de Dados e Sistemas de Numeração
Obs1.: o número de bits para a representação é determinado no projecto do computador.
Obs2.: em sinal e magnitude, existem duas representações para o zero (00000000 ou 10000000).
5.4 ARITMÉTICA EM SINAL E MAGNITUDE
5.4.1 Algoritmo da Soma
a) verificar o sinal das parcelas
b) se os sinais forem iguais:
* repetir o sinal
* somar as magnitudes
c) se os sinais forem diferentes
* verificar qual parcela tem maior magnitude
* repetir o sinal da maior magnitude
* subtrair a menor magnitude da maior magnitude
5.4.2 Algoritmo da subtracção
O algoritmo da subtracção é o mesmo da soma, sendo feita como se fosse uma soma de dois números
que tem os sinais diferentes.
A representação em sinal e magnitude apresenta uma grande desvantagem: ela exige um grande
número de testes para se realizar uma simples soma de dois números inteiros. O algoritmo acima
descrito é complicado de ser realizado no computador, o que resulta em baixa eficiência (execução
lenta). Um outro ponto negativo é termos duas representações para o zero.
5.5 REPRESENTAÇÃO DE NÚMEROS EM COMPLEMENTO
Complemento é a diferença entre cada algarismo do número e o maior algarismo possível na base. Uma
vantagem da utilização da representação em complemento é que a subtracção entre dois números pode
ser substituída pela sua soma em complemento.
5.5.1 REPRESENTAÇÃO DE NÚMEROS POSITIVOS EM COMPLEMENTO
A representação de números positivos em complemento não tem qualquer alteração, isto é, é idêntica à
representação em sinal e magnitude.
5.5.2 REPRESENTAÇÃO DE NÚMEROS NEGATIVOS EM COMPLEMENTO A
(BASE - 1)
A representação dos números inteiros negativos é obtida efectuando-se: (base - 1) menos cada
algarismo do número. Fica mais fácil entender através de exemplos:
Ex.1: Calcular o complemento a (base - 1) do número 29710.
Se a base é 10, então 10-1 = 9 e o complemento a (base -1) será igual a complemento a 9
Ex.2: Calcular o complemento a (base - 1) do número 3A7EH.
Se a base é 16, então 10H-1 = F e o complemento a (base -1) será igual a complemento a F.
Portanto:
Luís Paulo Reis / 2002
Pág. 23
Representação de Dados e Sistemas de Numeração
Caso Particular: Números na Base 2 (Complemento a 1)
Para se obter o complemento a 1 de um número binário, devemos subtrair cada algarismo de 1. Uma
particularidade dos números binários é que, para efectuar esta operação, basta inverter todos os bits.
Como exemplo, vamos calcular o complemento a 1 (C1) de um número binário 0011 com 4 dígitos.
Portanto, bastaria inverter todos os bits!
Vamos analisar como ficaria a representação em C1 dos números binários de 4 dígitos:
Decimal(+) Binário(se o nº é (+), não há alteração) Decimal(-) Binário em C1
0
0000
0
1111
1
0001
-1
1110
2
0010
-2
1101
3
0011
-3
1100
4
0100
-4
1011
5
0101
-5
1010
6
0110
-6
1001
7
0111
-7
1000
5.5.3 FAIXA DE REPRESENTAÇÃO
n
A representação na base b em complemento a (base-1) com n bits possui b representações e permite
representar bn -1 valores. Há duas representações para o zero.
A faixa de representação de uma representação na base 2 em complemento a (base-1) com n bits é a
mesma que em sinal e magnitude e pode ser calculada como:
n
n-1
n-1
n-1
2 valores, entre - ( 2 -1) e + ( 2 -1) O maior valor inteiro positivo será então + ( 2 -1) e o menor valor
inteiro negativo será - ( 2n-1-1).
Obs1.: o número de bits para a representação é determinado no projecto do computador.
Obs2.: em C1 também existem duas representações para o zero.
Vamos verificar qual a faixa de representação nos seguintes exemplos:
Base 10 com 3 dígitos: a representação varia de 000 a 999 (103 representações), representando os
números de -499 a -1 (faixa negativa), de +1 a +499 (faixa positiva).
Base 10
Faixa Inferior (+)
C1
1,2,3,...,497,498,499 500,501,...996,997,998
Faixa Superior (-)
Número Representado 1,2,3,...,497,498,499 -499,-498,...,-3,-2,-1
O zero pode ser representado tanto por 000 quanto por 999.
Base 16 com 4 dígitos: a representação varia de 0000 a FFFF, representando os números de -7FFF a 0001 (faixa negativa) e de +0001 a +7FFF (faixa positiva).
Base 16
Faixa Inferior (+)
C1
0001,0002,...,7FFE,7FFF 8000,8001,...,FFFD,FFFE
Faixa Superior (-)
Número Representado 0001,0002,...,7FFE,7FFF -7FFF,-7FFE,...,-0002,-0001
Luís Paulo Reis / 2002
Pág. 24
Representação de Dados e Sistemas de Numeração
Obs: Podemos concluir que, tal como na representação em sinal e magnitude, sempre que em uma
representação em complemento o primeiro dígito binário for 1, o número representado é negativo! Mas é
importante notar que o bit mais significativo, na representação em complemento, ao contrário do que
ocorre na representação em sinal e magnitude, NÃO REPRESENTA O SINAL DE NEGATIVO!
5.5.4 ARITMÉTICA EM COMPLEMENTO A (BASE - 1)
Na aritmética em complemento a (base-1), basta somar os números, sendo que um número negativo
estará representado por seu complemento. Ex.: Somar + 123 com - 418 (decimal).
Verificamos que o resultado 704 (C9) é um número negativo, isto é, o complemento a 9 (base 10 -1) de
295.
Repare que a subtracção (ou soma de um número positivo com um número negativo) se transforma,
nesta representação, em uma soma em complemento, isto é, a soma dos complementos do número
positivo com o número negativo! Portanto, numa subtracção (realizada através de soma em
complemento), se o número é positivo, mantenha-o; se o número é negativo, complemente-o; e aí, é só
somar! Dessa forma, podemos constatar que o algoritmo da soma em complemento é muito mais
simples que o da soma em sinal e magnitude, de vez que não requer nenhum teste. No entanto,
continuamos com duas representações para o zero. Vamos a seguir discutir a solução para esse
problema.
5.5.5 REPRESENTAÇÃO DE NÚMEROS NEGATIVOS EM COMPLEMENTO A
BASE
A representação dos números inteiros negativos em complemento a base é obtida subtraindo-se da
base cada algarismo do número. Ora, seria a mesma coisa subtrair cada algarismo de (base-1), isto é,
calcular o complemento a (base -1) e depois somar 1 ao resultado, ou seja:
b - N = [(b-1) - N] + 1.
Ou seja, encontramos o complemento a (base-1) do número (o que facilita muito no caso dos números
binários) e depois somamos 1 ao resultado. Fica mais fácil entender através de exemplos:
Ex.1: Calcular o complemento a base do número 29710.
Se a base é 10, o complemento a base será igual a complemento a 10.
Ex.2: Calcular o complemento a base do número 3A7Eh.
Se a base é 16 (lembremos mais uma vez que o H ou h depois do número simboliza "hexadecimal"), o
complemento a base será igual a complemento a 1610 ou 10h.
Portanto, calculando o complemento a base dos números acima, temos:
Caso Particular: Números na Base 2 (Complemento a 2)
Para se obter o complemento a 2 de um número binário, a regra geral nos diz para subtrair cada
algarismo de 2. Ora, seria a mesma coisa subtrair cada algarismo de 1 (complemento a 1) e depois
somar 1 ao resultado, ou seja: (2-N) = (1-N) + 1. Assim, tirando partido da particularidade dos números
binários anteriormente apresentada (para obter o C1 de um número binário, basta inverter todos os
bits), para obter o C2 de um número obtemos primeiro o C1 (invertendo os bits) e depois somamos 1 ao
resultado.
Como exemplo, vamos calcular o complemento a 2 (C2) de um número binário 0011 com 4 dígitos.
Luís Paulo Reis / 2002
Pág. 25
Representação de Dados e Sistemas de Numeração
Vamos analisar como ficaria a representação em C2 dos números binários de 4 dígitos:
Decimal(+) Binário(se o nº é (+), não há alteração) Decimal(-) Binário em C2
0
0000
-1
1111
1
0001
-2
1110
2
0010
-3
1101
3
0011
-4
1100
4
0100
-5
1011
5
0101
-6
1010
6
0110
-7
1001
7
0111
-8
1000
Vemos assim que em C2, não há duas representações para o valor 0 e consequentemente abriu-se
lugar para mais uma representação - no caso, mais um número negativo pode ser representado.
5.5.6 FAIXA DE REPRESENTAÇÃO
n
A representação na base b em complemento a base com n bits possui b representações e permite
representar bn valores.
A faixa de representação de uma representação na base 2 em complemento a base com n bits pode ser
calculada como
n
n-1
2 valores (entre - 2
n-1
e + 2 -1), sendo 2 a base.
O maior valor inteiro positivo será então + ( 2n-1-1) e o menor valor inteiro negativo será - ( 2n-1).
Obs1.: o número de bits para a representação é determinado no projecto do computador.
Obs2.: nesta representação somente existe uma representação para o zero e há mais um número
negativo representado!
Nos exemplos acima, vamos verificar qual a faixa de representação:
Base 10 com 3 dígitos: de 0 a 999 (103 valores), representando de -500 a -1 (faixa negativa) e de 1 a
+499 (faixa positiva). O zero tem apenas uma representação: 000.
Base 10
Faixa Inferior (+)
Faixa Superior (-)
C2
1,2,3,...,497,498,499 500,501,...,998,999
Número Representado 1,2,3,...,497,498,499 -500,-499,...,-3,-2,-1
Base 16 com 4 dígitos: de 0 a FFFF, representando -8000 a -1 (faixa negativa) e de 0 a +7FFF (faixa
positiva). O zero tem apenas uma representação: 0000.
Base 16
Faixa Inferior (+)
Faixa Superior (-)
C1
0001,0002,...,7FFE,7FFF 8000,8001,...,FFFD,FFFE
Número Representado 0001,0002,...,7FFE,7FFF -8000,-7999,...,-0002,-0001
Obs: Podemos concluir que, tal como na representação em sinal e magnitude e em complemento a
(base-1), sempre que em uma representação em complemento a base o primeiro dígito binário for 1, o
número representado é negativo! Mas é importante notar que o bit mais significativo, na representação
em complemento, ao contrário do que ocorre na representação em sinal e magnitude, NÃO
REPRESENTA O SINAL DE NEGATIVO!
Luís Paulo Reis / 2002
Pág. 26
Representação de Dados e Sistemas de Numeração
Exercício 1 – Sistemas de Numeração e
Conversões de Base
1) Qual o binário equivalente a sua idade? Quais seus equivalentes em octal(8), decimal(10) e
hexadecimal(16)?
2) Qual o maior binário que pode ser representado por uma série de 16 bits? Quais seus equivalentes
em octal(8), decimal(10) e hexadecimal(16)?
3) Considerando o sistema sexagesimal (base 60), que é o mesmo que utilizamos para as horas, qual o
maior algarismo que podemos representar neste sistema de numeração?
4) Qual a base de um sistema de numeração que possui os seguintes algarismos?
a) (0,1,2,3,4,5,6).:
b) (0,1,2,3,4,5,6,7,8).:
c) (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E).:
d) (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I).:
5) Efectue as seguintes conversões.:
a) 10110010012 => n8
b) 10110010012 => n16
c) F5C316 => n2
d) 36718 => n2
e) F5C316 => n8
f) 36718 => n16
g) 10110010012 => n10 h) 36718 => n10
i) F5C316 => n10
j) 1100101,1112 => n10
k) 4527,58 => n10
l) F5C3,B16 => n10
m) 1100101,1112 => n10
n) 4527,58 => n10
o) F5C3,B16 => n10
p) 45759 => n10
q) 451810 => n2
r) 157810 => n8
s) 381710 => n16
t) 754110 => n5
6) Converta para base 10 os seguintes números:
a.
b.
c.
d.
1001012
7608
32104
101111002
7) Converta para base 2 os seguintes números, representados em base 10:
a) 255
b) 2
c) 12
d)16
e) 9
f) 32
g) 8
8) Do exercício anterior consegue inferir alguma regra para:
a) Representação de potências naturais de 2?
b) Representação de números pares e ímpares?
9) Represente em binário os números: a) 512 + 13
b)27 + 25 + 4
10) Realize as seguintes conversões:
a)
b)
c)
d)
e)
f)
1010012 para hexadecimal;
30010 para hexadecimal;
F0916 para binário;
100B16 para decimal;
EDC16 para decimal;
1000111012 para hexadecimal;
Luís Paulo Reis / 2002
Pág. 27
Representação de Dados e Sistemas de Numeração
Exercícios - Representação de Dados e
Aritmética Binária e Complementar
1) Efectue as seguintes adições em binário:
a) 101101001 + 100101101.:
b) 011001111 + 011101110.:
c) 110011100 + 101101110 + 011001101.:
d) 11001 + 00110
e) 010101 + 001011
f) 1011 + 1101
g) 10011111 + 1100001 (usando apenas 8 bits)
2) Efectue as seguintes subtracções em binário:
a) 101101001 - 100101101.:
b) 011101110 - 011001111.:
c) 110011100 - 101101110.:
3) Efectue as seguintes multiplicações em binário:
a) 101101001 * 110.:
b) 011101110 * 11.:
c) 110011100 * 101.:
4) Efectue as seguintes divisões em binário:
a) 101101001 / 1101.:
b) 011101110 / 110.:
c) 110011100 / 1010.:
5) Usando a representação em Sinal e Magnitude com 8 bits, represente os seguintes números:
a) +50.:
b) -45.:
c) +63.:
d) -98.:
e) 0 (Duas representações).:
6) Usando a representação em Complemento a Base - 1, represente os seguintes números:
a) +50.:
b) -45.:
c) +63.:
d) -98.:
e) 0 (Duas representações).:
7) Usando a representação em Complemento a Base, represente os seguintes números:
a) +50.:
b) -45.:
c) +63.:
d) -98.:
e) 0 (Uma representação).:
8) Represente os números nas várias representações binárias possíveis, e com o menor número de bits:
a) –120
b) –25 c) –58
d) 33
9) Realize em binário as seguintes operações aritméticas, usando sempre 8 bits, se possível:
a) 121-47
b) 100+12 c) 12-100 d) -12-(-100) e) 200-55 f) 120-120
10) Calcule o itens abaixo propostos, sabendo que a representação utilizada é a de sinal e magnitude.:
a) 001101001 + 110100100
b) 001101001 + 010100100
c) 101101001 + 110100100
11) Calcule o itens abaixo propostos, sabendo que a representação utilizada é a de Complemento a
Base - 1.:
a) 001101001 + 110100100
b) 001101001 + 010100100
c) 101101001 + 110100100
12) Calcule o itens abaixo propostos, sabendo que a representação utilizada é a de Complemento a
Base.:
a) 001101001 + 110100100
b) 001101001 + 010100100
c) 101101001 + 110100100
Luís Paulo Reis / 2002
Pág. 28
Representação de Dados e Sistemas de Numeração
Tabela para auxílio nos cálculos de conversões
Binário Octal Decimal Hexadecimal
Número
\
-4
Potência
0
0
0
0
1
1
1
1
10
2
2
2
11
3
3
3
100
4
4
4
101
5
5
5
110
6
6
6
111
7
7
7
1000
10
8
8
1001
11
9
9
1010
12
10
A
1011
13
11
B
1100
14
12
C
1101
15
13
D
1110
16
14
E
1111
17
15
F
-3
-2
-1
0 1
2
3
4
5
6
7
8
9
10
11
12
1
1
1
1
1
1
1
1 1
1
1
1
1
1
1
1
1
1
2
0,0625 0,1250 0,2500 0,5000 1 2
4
8
16
32
64
128
256
512
1024 2048 4096
3
0,0123 0,0370 0,1111 0,3333 1 3
9
27
81
243
729
2187
6561 19683
4
0,0039 0,0156 0,0625 0,2500 1 4
16
64
256
1024
4096
16384
5
0,0016 0,0080 0,0400 0,2000 1 5
25
125
625
3125
15625
6
0,0007 0,0046 0,0277 0,1666 1 6
36
216
1296
7776
7
0,0029 0,0204 0,1428 1 7
49
343
2401
16807
8
0,0019 0,0156 0,1250 1 8
64
512
4096
32768
9
0,0013 0,0123 0,1111 1 9
81
729
6561
10
0,0010 0,0100 0,1000 1 10 100 1000 10000
11
0,0082 0,0909 1 11 121 1331 14641
12
0,0069 0,0833 1 12 144 1728 20736
13
0,0059 0,0769 1 13 169 2197 28561
14
0,0051 0,0714 1 14 196 2744 38416
15
0,0044 0,0666 1 15 225 3375 50625
Luís Paulo Reis / 2002
Pág. 29
Download