SistemasNumeracao

Você também pode gostar

Você está na página 1de 21

Representação de Dados e Sistemas de Numeração

ÍNDICE
ÍNDICE _____________________________________________________________________ 2
1 Bits & Bytes _______________________________________________________________ 4
1.1 Bit ___________________________________________________________________ 4
1.2 Byte __________________________________________________________________ 4
1.3 Múltiplos do Byte _______________________________________________________ 7
2 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 ____________________ 12
3 Conversão de Números entre Bases Diferentes __________________________________ 13
3.1 Conversões entre as bases 2, 8 e 16 ________________________________________ 13
3.1.1 Conversão de Base.: Binária(Base 2) => Octal(Base 8) ______________________ 13
3.1.2 Conversão de Base.: Octal(Base 8) => Binária(Base 2) ______________________ 13
3.1.3 Conversão de Base.: Binária(Base 2) => Hexadecimal(Base 16) _______________ 13
3.1.4 Conversão de Base.: Hexadecimal(Base 16) => Binária(Base 2) _______________ 13
3.2 Outras conversões _____________________________________________________ 13
3.2.1 Conversão de Base.: Binário => Decimal _________________________________ 14
3.2.2 Conversão de Base.: Octal => Decimal ___________________________________ 14
3.2.3 Conversão de Base.: Hexadecimal => Decimal _____________________________ 14
3.2.4 Conversão de Base.: Base Qualquer => Decimal ___________________________ 15
3.3 Conversão de Números da Base 10 para uma Base b qualquer ___________________ 15
3.3.1 Parte Inteira: ______________________________________________________ 15
3.3.2 Parte Fraccionária __________________________________________________ 15
3.4 Conversão de Números entre duas Bases quaisquer ___________________________ 16
3.5 Exercícios Simples de Conversão de Números entre duas Bases __________________ 16
4 Aritmética Binária _________________________________________________________ 17
4.1 Adição _______________________________________________________________ 17
4.2 Subtracção ___________________________________________________________ 18
4.3 Multiplicação _________________________________________________________ 18
4.4 Divisão ______________________________________________________________ 19
4.5 Aritmética Binária Complementar _________________________________________ 20
4.5.1 Algoritmos para determinação do Complemento __________________________ 20

dr. Ticongolo, Inácio (MsC) Pág. 2


Representação de Dados e Sistemas de Numeração
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


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

dr. Ticongolo, Inácio (MsC) 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.

dr. Ticongolo, Inácio (MsC) Pág. 4


Representação de Dados e Sistemas de Numeração

dr. Ticongolo, Inácio (MsC) Pág. 5


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)
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.

dr. Ticongolo, Inácio (MsC) Pág. 6


Representação de Dados e Sistemas de Numeração
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.
Terabyte ou Tb corresponde a 1024 Gb.
Quadro Comparativo

Qtd. Tbytes Qtd. Qtd. Qtd. Qtd. bytes Qtd. bits


Unidade
Gbytes Mbytes Kbytes
bit 1
byte 1 8
10241 * 8
Kbyte 1 10241

10242 * 8
Mbyte 1 10241 10242

10243 * 8
Gbyte 1 10241 10242 10243

10244 * 8
Tbyte 1 10241 10242 10243 10244

dr. Ticongolo, Inácio (MsC) 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 algarismo 5 representa cinco unidades(5 x 100). 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 2 4 (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:
Nb = an.bn + .... + a2.b2 + a1.b1 + a0.b0 + a-1.b-1 + a-2.b-2 + .... + a-n.b-n 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á FF 16 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 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 inary 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!

dr. Ticongolo, Inácio (MsC) Pág. 8


Representação de Dados e Sistemas de Numeração
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 Rep. Decimal
1 20 1
10 21 2
100 22 4
1000 23 8
10000 24 16
100000 25 32
1000000 26 64
10000000 27 128
100000000 28 256
1000000000 29 512
10000000000 210 1024
100000000000 211 2048
1000000000000 212 4096
10000000000000 213 8192
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
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.

dr. Ticongolo, Inácio (MsC) Pág. 9


Representação de Dados e Sistemas de Numeração
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.

dr. Ticongolo, Inácio (MsC) Pág. 10


Representação de Dados e Sistemas de Numeração
De acordo com a tabela acima, o número decimal 20 é representado por 20 10, isto é, escreve-se o número e um índice
indicando a base em que está representado. Geralmente, a base é o número de

dr. Ticongolo, Inácio (MsC) Pág. 11


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. Qual o decimal equivalente a 110110112?


2. Qual o octal equivalente a 110110112?
3. Qual o hexadecimal equivalente a 110110112?
4. Qual o binário equivalente à sua idade? Qual seus equivalentes octal, decimal e hexadecimal?
5. Qual o maior binário que pode ser representado por uma série de 16 bits? Qual seus equivalentes octal,
decimal e hexadecimal?
Representação de Dados e Sistemas de Numeração
Luís Paulo Reis / 2002 Pág. 11

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 2 3 = 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.

Sabemos que 0102


= 28 ; 1012 = 58 ; 0012 = 18 portanto
2518 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 2 4 = 16, basta separarmos em grupos de 4
bits (começando sempre da direita para a esquerda!) e converter. Por exemplo:
Separando em grupos de 4, da
110101011012 => 110.1010.11012 direita p/ esquerda.

Sabemos que 1102= 616 ; 10102 = A16 ; 11012 = D16


6AD16 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:
Convertendo cada dígito hexadecimal
4CF616 => 0100 . 1100 . 1111 . 01102 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.

Convertendo cada dígito hexadecimal


3F516 => 11 . 1111 . 01012 em 4 dígitos binários.
Separando em grupos de 3, da
11111101012 => 1 . 111 . 110 . 1012 direita p/ esquerda.

Sabemos que 12
= 18 ; 1112 = 78 ; 1102 = 68 ; 1012 = 58 Portanto
17658 3F516 = 11111101012 = 17658
Professor cieslak Pág. 13
Representação de Dados e Sistemas de Numeração
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
(1 * 1) + (1 * 2) + (0 * 4) + (1 * 8) + (0 * 16) + (1 * 32) + (0 * 64) + (1 * 128) =
27 26 25 24 23 22 21 20 = 1 + 2 + 8 + 32 + 128 = 169

1 0101011 Portanto.: 101010112 = 16910


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) + (0 * 64)
+ (1 * 128) + (0 * 256) + (0 * 512) + (1 * 1024)
211 210 29 28 27 26 25 24 23 22 21 20 + (1 * 2048) =
= 1 + 2 + 8 + 16 + 128 + 1024 + 2048 = 3227
1 1 0 0 1 0011011 Portanto.: 1100100110112 = 322710
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
(4 * 1) + (2 * 8) + (3 * 64) + (1 * 512) =
83 82 81 80 = 4 + 16 + 192 + 512 = 724

1 324 Portanto.: 13248 = 72410


Outro exemplo com um número octal maior.: 123456
32768 4096 512 64 8 1
(6 * 1) + (5 * 8) + (4 * 64) + (3 * 512) + (2 * 4096) + (1 * 32768) =
85 84 83 82 81 80 = 6 + 40 + 256 + 1536 + 8192 + 32768 = 42798 Portanto.:

1 2 3 456 1234568 = 4279810


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) =
163 162 161 160 = 1 + 16 + 256 + 4096 = 4369

1 1 1 1 Portanto.: 111116 = 436910


Outro exemplo com um número hexadecimal um pouco maior.: 2B0F
4096 256 16 1 (15 * 1) + (0 * 16) + (11 * 256) + (2 * 4096) = = 15 A = 10
+ 0 + 2816 + 8192 = 11023 B = 11
163 162 161 160

Portanto.: 2B0F16 = 1102310 C = 12


D = 13
2 B 0 F E = 14
F = 15
Outro exemplo com um número hexadecimal diferente.: ACDE
4096 256 16 1 A =
10
163 162 161 160 (14 * 1) + (13 * 16) + (12 * 256) + (10 * 4096) =
B =
= 14 + 208 + 3072 + 40960 = 44254 11 C = 12
Portanto.: ACDE16 = 4425410 D = 13
A C D E E = 14
F = 15

Professor cieslak Pág. 14


Representação de Dados e Sistemas de Numeração
3.2.4 Conversão de Base.: Base Qualquer => Decimal
Vamos relembrar a expressão já apresentada:
Nb = an.bn + .... + a2.b2 + a1.b1 + a0.b0 + a-1.b-1 + a-2.b-2 + .... + 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 que F 16=1510. Então:
4x162 + 15x161 + 5x160 = 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.

Solução: 3x51 + 4x50 + 3x5-1 = 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 9|2 4|2 2|2 1|2
+---- +---- +---- +---- +---- a0=1 9 a1=1 4 a2=0 2 a3=0 1 a4=1 0 Portanto.:
1910 = 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 7|2 3|2 1|2
Professor cieslak Pág. 15
Representação de Dados e Sistemas de Numeração
+---- +---- +---- +----
a0=1 7 a1=1 3 a2=1 1 a3=1 0

Parte Inteira.: 1510 = 11112


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-1 + 0x2-2 + 1x2-3 + 0x2-4 + 0x2-5 = 0,5 + 0,125 = 0,62510
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

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
Professor cieslak Pág. 16
Representação de Dados e Sistemas de Numeração
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 Binário Hexadecimal
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

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 =0
0 +1 =1
1 +0 =1
1 + 1 = 0 (e "vai um" p/ o dígito de ordem superior)
1 + 1 + 1 = 1 (e "vai um" p/ o dígito de ordem superior)
Exemplo:
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".
Professor cieslak Pág. 17
Representação de Dados e Sistemas de Numeração
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=0
0 - 1 = 1 (e "vem um" do dígito de ordem superior)
1 -0=1
1-1=0
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"
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=0
0 *1=0
1 *0=0
1*1=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.
Professor cieslak Pág. 18
Representação de Dados e Sistemas de Numeração
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 (1)
-11
100111 (2)
-11
100100 (3)
-11
100001 (4)
-11
11110 (5)
-11
11011 (6)
-11
11000 (7)
-11
10101 (8)
-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.

Professor cieslak Pág. 19


Representação de Dados e Sistemas de Numeração
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 10010 2.

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
Professor cieslak Pág. 20
Representação de Dados e Sistemas de Numeração
(2) inverte o subtraendo ---> 0011
(3) soma minuendo e subtraendo ---> 10000
(4) soma 1 ---> 10001

(5) ignora o "vai-um" ---> 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.

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)
Professor cieslak Pág. 21
Representação de Dados e Sistemas de Numeração
*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.

Professor cieslak Pág. 22

Você também pode gostar