sistemas numéricos e representação de dadossistemas numéricos e representação de dados heitor...
TRANSCRIPT
+
Sistemas Numéricos e
Representação de Dados
Heitor S. Ramos
+História
Na Síria, durante o século VI, fundaram-se centros de culturagrega que se reuniam exclusivamente para discutir cultura e arte grega.
Em 662 d.C., o bisco Severus Seborkt exaltou a sabedoria de outros povos, citando o exemplo dos novos métodos de cálculoutilizados pelos hindus e que até então empregam 9 sinais.
O algarismo zero ainda não havia chegado ao Ocidente. O hindus introduziram uma posição vazia no final do século VI quesó chegou a Europa alguns séculos depois.
Com a introdução do zero, o Sistema de numeração utilizado pornós até hoje estava pronto e era chamado de algarismos indo-arábicos.
+História (2)
Em 825 d. C., o sábio de Bagdá chamado al-Khowarizmi foi
encarregado de traduzir livros de matemática adquiridos da
Índia.
Durante esse trabalho ele se deparou com o Sistema de
numeração decimal. Ficou tão impressionado que decidiu
escrever um livro sobre esse sistema.
Através desse livro “A arte Hindu de Calcular” o mundo
tomou conhecimento do Sistema Decimal.
+Bit, Byte, Caracter, Palavra
Nos computadores, apenas dois símbolos são utilizados. Através deles, todos os outros símbolos e algarimos podemser representados: os algarismos 0 e 1
Esses dois algarismos representam os únicos algarismos da base 2, também chamada de binária. Cada algarismos é um bit (binary digit)
O bit é a menor quantidade de informação que pode serarmazenada na memória do computador
O byte é uma unidade de informação constituído de oito bits
A palavra é uma unidade básica formada por um agrupamento de 32 bits
+Base de um sistema de numeração
Historicamente existiram vários sistemas de numeração com bases diferentes
Os babilônios adotaram um Sistema de numeração com base 60. Esse Sistema é utilizado até hoje na medida de ângulos e tempos.
Acredita-se que o primeiro Sistema foi o decimal, ou base dez, em decorrência da quantidade de dedos na mão do homem
Em regra, qualquer número inteiro maior ou igual a 1 pode serutilizado como base
Na computação, os Sistemas mais comuns são o binário, oshexadecimais e os octais
+Polinômio de um Sistema de
numeração
Todo número escrito em um Sistema de numeração de base
“b” pode ser representado segundo:
A =
𝑖=0
𝑛−1
𝑎𝑖𝑏𝑖 = 𝑎0𝑏
0 + 𝑎1𝑏1 +⋯+ 𝑎𝑛−2𝑏
𝑛−2 + 𝑎𝑛−1𝑏𝑛−1
Ex:
32610 = 6 × 100 + 2 × 101 + 3 × 102 = 6 + 20 + 300
+Sistema decimal
Usa os algarismos 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9
Cada dez unidades equivale a uma unidade da ordem
imediatamente superior
Qualquer algarismos escrito a esquerda de um outro ale dez
vezes mais
O Sistema é o mais utilizado pelas pessoas, portanto vamos
utilizá-lo como referência. Qualquer número escrito em base
diferente de 10 será explicitamente indicado como:
31716, 1101012, 5538
+Sistema binário
Apenas dois algarismos (0, 1)
Polinômio característico:
A =
𝑖=0
𝑛−1
𝑎𝑖2𝑖
Sistema mais utilizado por computadores
Ex:
11010012 = 1 × 26 + 1 × 25 + 0 × 24 + 1 × 23 + 0 × 22 + 1 × 20
11010012 = 10510
+Sistema Hexadecimal
Ou base 16, equivale aos aogarismos de 0 a 15, ou seja, 0, 1,
2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F
A=10, B=11, C=12, D=13, E=14 e F=15
Polinônio característico:
A =
𝑖=0
𝑛−1
𝑎𝑖16𝑖
Ex:
3𝐵𝐹4𝐶16 = 3 × 164 + 𝐵 × 163 + 𝐹 × 162 + 4 × 161 + 𝐶 × 160
3𝐵𝐹4𝐶16 = 24558010
+Sistema Octal
Possui os algarismos entre 0 e 7: 0, 1, 2, 3, 4, 5, 6, 7
Polinômio característico:
A =
𝑖=0
𝑛−1
𝑎𝑖8𝑖
Ex:
546218 = 5 × 84 + 4 × 83 + 6 × 82 + 2 × 81 + 1 × 80 = 2292910
+Código binário puro e variantes
Todos os códigos existentes são variantes do código binário
puro
Principais códigos:
Designação Quantidade de
Informação
Binário Variável
Binário Decimal BCD 6 bits
EBCDIC 8 bits
ASCII 8 bits
+Código Binário Decimal (BCD)
Variação do código binário puro, sendo mais fácil de
interpretar
Ex: 7543𝐵𝐶𝐷
Quatro bits representam qualquer algarismo, porém, o BCD
pode comportar até 6 bits, os 2 bits adicionais representam
as letras A e B
0111 0101 0100 0011
7 5 4 3
B A 8 4 2 1
Zona Parte Numérica
+Extended Binary Coded Decimal
Interchange Code (BCDIC)
Código que era utilizado em plataformas de grande porte da
IBM, tendo como padrão 8 bits na configuração do byte
No código EBCIDC os bits são numerados dentro do byte de
zero a sete, da esquerda para a direita
Os bits de zero a três constituem a zona, e os de quarto a sete
a parte numérica
+American National Standard Code For
Information Interchange (ASCII)
+Mudança de Base Matemáticas
Mudança da base 10 para qualquer base “b”
Envolve uma sucessão de divisões do número inicial pela
base “b” até obtermos um quociente menor que a base
Nesse instante, escreve-se o número solicitado começando
com o ultimo quociente e com os sucessivos restos, da direita
para a esquerda
+Mudança da base 10 para binário
61 2
1 30 2
0 15 2
1 7 2
1 3 2
1 1
6110 = 1111012
+Mudança de base de 10 para base
8 (octal)
61 8
5 7
6110 = 758
+Mudança da base 10 para a base
16 (hexadecimal)
61 16
13 3
6110 = 3𝐷16
+Mudança de qualquer base para
10
Sucessão de multiplicações da direita para a esquerda, do
número inicial pela base “b”, elevando a base a partir de
zero, e incromentando-a de um em um.
+Mudança da base Hexadecimal
para Decimal
F 4 B 2 A 5
5 × 160 = 5
10 × 161 = 160
2 × 162 = 512
11 × 163 = 45056
4 × 164 = 262144
15 × 165 = 15728640
1603651710
+Exercícios:
7502458 → ? 10
11010011112 → ? 10
4A3F16 → ? 10
+Operações Aritiméticas com
Diversas Bases
Para soma de números binários, devemos obedecer às
seguintes regras:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 e vai 1
Ex: 100011010111 + 1101001001 =?
+Subtração de binários
Para a subtração de números binários, devemos prosseguir
da seguinte maneira:
0 − 0 = 0
1 − 1 = 0
1 − 0 = 1
0 − 1 = 1 e empresta 1
Ex: 100011010111 − 1101001001 =?
+Soma de hexadecimais
Para a soma na base hexadecimal, devemos respeitar da
mesma maneira que na base decimal, o limite do algarismo,
o qual não pode ultrapassar o valor máximo que é F(1510), aumentando em uma unidade o algarismo antecessor.
Ex: 𝐵𝐶7 + 34𝐵 =?
+Subtração de Hexadecimais
Para a subtração devemos observer a regra de emprestar “1”
do próximo algarismo, o que na realidade significa o
empréstimo de 16, ou seja, o máximo do algarismo na base
16.
Ex: 3𝐷𝐴 − 37 =?
Ex2: 548 − 24𝐴 =?
+Soma de Octais
Para a soma na base octal devemos respeitar, ada mesma
maneira que na base decimal, o limite do algarismo, o qual
não poderá ultrapassar o valor máximo que é 7, aumentando
em uma unidade o algarismo antecessor.
Ex: 1573 + 2236 =?
+Subtração de Octais
Para subtração de octais, devemos observer a regra de
emprestar “1” do próximo algarismo, o que na realidade
significa o empréstimo de 8, ou seja, o máximo do algarismo
na base 8.
Ex: 377 − 37 =?
Ex2: 546 − 247 =?
+Exercícios (em classe – 1 ponto na
prova)
Faça as seguintes conversões de base:
17543810 para as bases 2, 8 e 16
𝐹3𝐵57𝐶16 para as bases 2, 8 e 10
6045238 para as bases 2, 10 e 16
11010101001112 para as bases 8, 10 e 16
Resolva as seguintes operações:
𝐹𝐵47𝐶16 + 𝐶𝐴02416
9𝐴𝐹2𝐶16 + 169210
375610 + 635458
11010102 + 𝐹4𝐵16
38𝐹216 − 776358
+Representação de números
inteiros (ℕ)
Como representar números inteiros positivos e negativos?
Representação sinal-magnitude
O bit mais significativo da palavra é um bite de sinal (0 -> positivo, 1-> negativo)
Ex: +18 = 00010010
Ex2: −18 = 10010010
𝐴 = 𝑖=0𝑛−22𝑖𝑎𝑖 , se an−1 = 0
− 𝑖=0𝑛−2 2𝑖𝑎𝑖 , se an−1 = 1
Essa notação, apesar e simples, apresenta diversas desvantagens.
Para efetuar adição e subtração precisa considerer tanto sinal quantomagnitude
Existem 2 representações para 0:
+0 = 00000000
−0 = 10000000
+Representação em complemento
de dois
usa o bit mais significativo como bit de sinal.
Faixa de valores representáveis −2𝑛−1a 2𝑛−1 − 1
Representações para o zero 1
Negação Pegue o complement booleano
de cada bit do número positivo
correspondente e some 1 ao
padrão de bits resultantes
Expansão do número de bits Acrescente posições de bit à
esquerda e preencha esses bits
com o bit de sinal
Regra de overflow Se dois números com mesmo
sinal forem somados, ocorrerá
overflow apenas se o resultado
tiver sinal oposto
Regra da subtração 𝐴 − 𝐵 = (Compl. de 2 𝐵) + 𝐴
+Complemento de dois
𝐴 = −2𝑛−1𝑎𝑛−1 +
𝑖=0
𝑛−2
2𝑖𝑎𝑖
Números negativos representáveis: de −1 a − 2𝑛−1
Números positivos representáveis: de 0 a 2𝑛−1 − 1
+Benefícios
Apenas uma representação para o algarismo zero
Facilita as operações aritméticas (vamos ver isso daqui a
pouco)
A negação é simples
3 = 00000011
Complemento booleano gera: 11111100
Adiciona 1 11111101
+Interpretação Geométrica
+Negação Caso Especial 1
0 = 00000000
Bit a bit not 11111111
Adiciona 1 to LSB +1
Resultado 1 00000000
Overflow is ignored, so:
- 0 = 0
+Negação Caso Especial 2
-128 = 10000000
Bit a bit not 01111111
Adiciona 1 to LSB +1
Resultado 10000000
Então:
-(-128) = -128 X
+Números possíveis de representar
8 bit complemento de 2
+127 = 01111111 = 27 -1
-128 = 10000000 = -27
16 bit complemento de 2
+32767 = 011111111 11111111 = 215 - 1
-32768 = 100000000 00000000 = -215
+Conversão de tamanho
Para números positivos, adiciona-se zero a esquerda
+18 = 00010010
+18 = 00000000 00010010
Para números negativos, adiciona-se 1 a esquerda
-18 = 10010010
-18 = 11111111 10010010
+Adição e subtração
Adição binária convencional
Monitora-se o bit de sinal para detectar overflow
Toma-se o complement de dois do subtraendo e soma ao
minuendo
i.e. a - b = a + (-b)
Então só precisamos de circuitos e adição e complemento de
2
+Hardware para adição e subtração
+Exemplos de adição de números
representado em complemento de 2
1001 + 0101
1100 + 0100
0011 + 0100
1100 + 1111
0101 + 0100
1001 + 1010
+Exemplos de adição de números
representado em complement de 2
0010 − 1011
0101 − 0010
1011 − 0010
0101 − 1110
0111 − 1001
1010 − 0100
+Multiplicação
1011 Multiplicando (11 dec)
x 1101 Multiplicador (13 dec)
1011
0000
1011
1011
10001111 resultado (143 dec)
Obs: o resultado tem o dobro do tamanho
+Multiplicação de inteiros sem sinal
+Exemplo
+Fluxograma da multiplicação de
inteiros sem sinal
+Multiplicação de inteiros
considerando o sinal
O algoritmo anterior não funciona!
Solução1
Converta o número para positivo (caso necessário)
Multiplique com o algoritmo anterior
Se os sinais forem diferentes, tome a negação da resposta
Solução 2
Algoritmo de Booth
+Algoritmo de Booth
+Example do Algorítimo de Booth
+Números reais
Número com frações
Pode ser resolvido com binário puro
1001.1010 = 24 + 20 + 2−1 + 2−3 = 9,625
Onde é o ponto de separação?
Fixo?
Muito limitado
Móvel?
Como sabemos onde ele está?
+Ponto Flutuante
±Mantissa × 2±E
O expoente é polarizado (soma-se a polarização (2𝑘−1−1))
A mantissa é normalizada na forma:
±1, bbb…b × 2±E
Isso implica que o bit mais à esquerda da mantissa é sempre 1
Não precise armazená-lo (bit implícito)
O campo de 23 bits é utilizado para armazenar uma mantissa de 24 bits com valor entre 0.5 e 1
O número de números representados continua sendo 232
Bit
de
sin
al
Expoente
Polarizado Significando ou Mantissa
23 bits8bits1bit
+Examplo de Ponto Flutuante
+Exemplo
−9,510= ?
Sinal negativo → 1
9,5 para binário → 1001,1
deslocamos a vírgula → 1,0011 ∗ 2³
agora que temos o expoente 3, devemos normalizá-lo → 3 +127 = 130
Em binário temos 3 = 11 e 127 = 1111111, somando os dois temos → 10000010
Resultado: 1 10000010 00110000000000000000000
+Números que podem ser
expressados
x x x x
+Densidade de números
+Precisão vs Representatividade
Se aumentarmos o número de bits do expoente, expandimos
a faixa de valores representáveis
Se aumentarmos o número de bits da mantissa, aumentamos
a precisão
Para aumentar o alcance e a precisão, precisamos aumentar
o número total de bits
+IEEE 754
Padrão para representação de ponto flutuante
32 e 64 bit (simples e dupla precisão)
8 e11 bit de expoente, respectivamente
Suporta formato estendido tanto para mantissa quanto para
expoente para armazenar resultados intermediários
+IEEE 754 Formats
+Manipulação de Bits
Operadores Lógicos: or (||), and (&&) e not (!)
Tratam qualquer argumento diferente de zero como true e igual a
zero com false
Retornam 1 ou 0 (true , false)
Exemplos:
Expressão Resultado
!0x41 0x00
!0x00 0x01
0xaa && 0x55 0x01
0xaa || 0x55 0x01
+Operadores bit a bit
Manipulação de dados bastante comum
Podem ser aplicados a qualquer dos tipos inteiros
Char, short, int, long
Baseados na algebra booleana (bit a bit)
And (A & B) Or (A | B)
Not (~A) Xor (A ^ B)
& 0 1
0 0 0
1 0 1
| 0 1
0 0 1
1 1 1
^ 0 1
0 0 1
1 1 0
&
0 1
1 0
+Exemplos (C)
unsigned short a,b,c;
a = 0xFF00; /* a = 1111 1111 0000 0000
b = 0xA5A5; b = 1010 0101 1010 0101
c = a | b; /* c = ?
c = a & b; /c = ?
c = ~a; /* c = ?
c = a ^ b; /* c = ?
+Exemplos (C)
Swap sem terceira variável
void troca (unsigned char x, unsigned char y)
{ /* 0x00000001 0x01000000
y = x ^ y; /* 0x00000001 0x01000001
x = x ^ y; /* 0x01000000 0x01000001
y = x ^ y; /* 0x01000000 0x00000001
}
+Deslocamento de bits
Deslocamento de padrões de bits para a direita ou para a esquerda
x << n : shift para a esquerda (equivale a ∗ 2𝑛)
Bits a direita são preenchidos com zero
x >> n : shift para a direita (equivale a /2𝑛)
Shift lógico: bits à esquerda são preenchidos com 0
Shift aritmético: bits à esquerda são preencidos com o bit maissignificativo original (bit de sinal)
Quando o operando é sem sinal, o shift é lógico
Quando o operando é com sinal, tipo de shift é escolhido pelocompilador
A aplicação de >> a operandos com sinal não é portátil
+Deslocamento de bits: exemplos
Operação x=[01100011] x=[10010101]
x << 4 00110000 01010000
x >> 4 (lógico) 00000110 00001001
x >> 4 (aritmético) 00000110 11111001