Microprocessadores IIMicroprocessadores IIProfessor: Mauro Jansen
Sistemas de Numeração e operações binárias
06/05/2015
Sistemas de Numeração
Prof. MauroMicroprocessadores II
Sistemas de Numeração 2
Sistemas de Numeração
Sistemas de numeração
� Conjunto de regras que nos permite escrever e ler qualquer número utilizando símbolos básicos (algarismos ou dígitos).
� Chamamos de “base N” o sistema de
Prof. MauroMicroprocessadores II
Sistemas de Numeração 3
� Chamamos de “base N” o sistema de numeração que usa “N” símbolos para representar os números� Ex.: base 10, base 2, base 8, base 16
Sistemas de numeração
� Exemplos:� Sistema decimal (base 10)
� Dez símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9� Sistema binário (base 2)
Dois símbolos: 0 e 1 (que são bits)
Usado interna-mente pelo computador
Prof. MauroMicroprocessadores II
Sistemas de Numeração 4
� Dois símbolos: 0 e 1 (que são bits)� Sistema octal (base 8)
� Oito símbolos: 0, 1, 2, 3, 4, 5, 6, 7� Sistema hexadecimal (base 16)
� Dezesseis símbolos:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Mais usado na prática de programação
Sistema Decimal
� Soma dos produtos dos dígitos por potências de base 10 (10n), onde n é a posição relativa do algarismo, da direita (n=0) para a esquerda
7 0 4 8
Prof. MauroMicroprocessadores II
Sistemas de Numeração 5
7 0 4 8
103 102 101 100
8 x 100 = 8 x 1 = 8
4 x 101 = 4 x 10 = 40
0 x 102 = 0 x 100 = 0
7 x 103 = 7 x 1.000 = 7.000
7.048
Sistema Binário
� Soma de produtos dos dígitos (bits) por potências de base 2 (2n), onde n é a posição relativa do algarismo, da direita (n=0) para a esquerda
1 0 1 0
Prof. MauroMicroprocessadores II
Sistemas de Numeração 6
1 0 1 0
23 22 21 20
0 x 20 = 0 x 1 = 0
1 x 21 = 1 x 2 = 2
0 x 22 = 0 x 4 = 0
1 x 23 = 1 x 8 = 8
10
Bits e Bytes
� Byte é um conjunto de 8 bits:
1 0 1 0 1 0 1 07 6 5 4 3 2 1 0
Bit 0: Bit menos Bit 7: Bit mais
Peso / ordem dos bits
Prof. MauroMicroprocessadores II
Sistemas de Numeração 7
� O byte é a menor unidade de memória� Um byte equivale a dois dígitos hexadecimais� Um Nibble é um conjunto de 4 bits (metade de
um byte) ou um dígito hexadecimal
Bit 0: Bit menos significativo (LSB)
Bit 7: Bit mais significativo (MSB)
Sistema Binário: valores máximos
� Quantidade máxima de valores representáveis com N bits: 2N
� Maior valor representável: 2N – 1� Exemplos:
Prof. MauroMicroprocessadores II
Sistemas de Numeração 8
� Exemplos:
Qtd.de bits Qtd.valores Maior valor Binário
4 24 = 16 15 1111
8 28 = 256 255 11111111
16 216 = 65536 65535 11111111 11111111
Sistema Hexadecimal
� Usa dezesseis símbolos:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
� Notação: letra “h” após o número � Exemplos: 3Fh, 200Ah, B7ECh, 70h
Sistema mais usado em computadores
Prof. MauroMicroprocessadores II
Sistemas de Numeração 9
� Sistema mais usado em computadores � Correspondência de algarismos hexadecimais
para decimais:A = 10 D = 13B = 11 E = 14C = 12 F = 15
Sistema Hexadecimal
� Soma de produtos dos dígitos (bits) por potências de base 16 (16n), onde n é a posição relativa do algarismo, da direita (n=0) para a esquerda
0 3 C F
Prof. MauroMicroprocessadores II
Sistemas de Numeração 10
0 3 C F
23 162 161 160
F x 160 = 15 x 1 = 15
C x 161 = 12 x 16 = 192
3 x 162 = 3 x 256 = 768
0 x 163 = = 0
975
Sistema Hexadecimal: valores máximos
� Quantidade máxima de valores representáveis com N dígitos: 16N
� Maior valor representável: 16N – 1� Exemplos:
Prof. MauroMicroprocessadores II
Sistemas de Numeração 11
� Exemplos:
Dígitos Qtd.de bits Qtd.valores Maior valor Hexa
1 4 161 = 16 15 F
2 8 162 = 256 255 FF
4 16 164 = 65536 65535 FFFF
Números com um byte
� Repare que com um byte (8 bits) podemos representar os números decimais de 0 a 255 e seus correspondentes hexadecimais e binários:
Decimal 0 a 255
Prof. MauroMicroprocessadores II
Sistemas de Numeração 12
Hexa 00h a FFh
Binário 00000000 a 11111111
� Para representar valores maiores que 255 precisaremos de dois bytes ou mais
� Cada dois dígitos hexadecimais correspondem a um byte
Aritmética binária
Prof. MauroMicroprocessadores II
Sistemas de Numeração 13
Aritmética binária
Soma binária� Regras:
Operação Resultado
0+0 0
0+1 1
1+0 1
1+1 10 (0 e “vai 1”)
Prof. MauroMicroprocessadores II
Sistemas de Numeração 14
� Exemplo:
� OBS: o “vai 1” ou transporte é chamado de “carry”
1+1 10 (0 e “vai 1”)
Soma binária
� Overflow (estouro): é quando o resultado da soma não cabe na quantidade de bits disponível
� Exemplo (dispondo de 4 bits):
Prof. MauroMicroprocessadores II
Sistemas de Numeração 15
� Exemplo (dispondo de 4 bits):
Overflow
10102 (1010)
+ 11012 (1310)
101112 ( 710)
Valores binários sinalizados
� São números inteiros (positivos e negativos – conjunto Ζ) no sistema binário
� Existem 2 soluções para representação:� Sinal-magnitude (pouco utilizada)
Prof. MauroMicroprocessadores II
Sistemas de Numeração 16
� Sinal-magnitude (pouco utilizada)� Complemento de 2 (padrão)
Valores binários sinalizados
� 1ª solução: sinal-magnitude� O bit mais significativo representa o sinal e os bits
restantes, o valor:� +8 = 00001000� - 8 = 10001000
Prof. MauroMicroprocessadores II
Sistemas de Numeração 17
� Desvantagens:� Duas representações para o número zero:
� +0 = 00000000� - 0 = 10000000
� P/ efetuar adição e subtração deve-se considerar tanto a magnitude quanto o sinal (dificuldade de implementação no processador)
Valores binários sinalizados
� 2ª solução (padrão): complemento de 2� Também usa o bit mais significativo como
sinal, mas os outros bits são interpretados de forma diferenteÉ o valor simétrico de um número binário
Prof. MauroMicroprocessadores II
Sistemas de Numeração 18
� É o valor simétrico de um número binário� Passos para achar o complemento de 2:
� Calcular o complemento de 1, invertendo todos os bits do número binário original
� Somar 1 ao complemento de 1
Valores binários sinalizados
� Exemplo: calcular o complemento de 2 de 00001000 (8 em decimal):
Normal: 00001000 (+810)Complemento de 1: 11110111Soma-se 1 ao c-1: 1
Prof. MauroMicroprocessadores II
Sistemas de Numeração 19
Soma-se 1 ao c-1: 1Complemento de 2: 11111000 (-810)
� Regra prática p/ achar complemento de 2:� Copie todos os bits da direita p/ esquerda até
achar o primeiro bit 1 (inclusive ele)� Inverta todos os demais bits
Valores binários sinalizados
� Quantidade máxima de valores representáveis com N bits: 2N - 1
� Faixa de valores: - 2N/2– 1 a + 2N/2 – 1� Exemplos:
Prof. MauroMicroprocessadores II
Sistemas de Numeração 20
� Exemplos:
Qtd.de bits Qtd.valores Faixa de valores
4 24-1 = 15 -7 a +7
8 28-1 = 255 -127 a +127
16 216-1 = 65535 -32.768 a +32.768
Complemento: noção matemática
� Complemento de “B”� É o valor simétrico de um número X na base “B”,
com N dígitos� Número YB com N dígitos que, somado a XB
também com N dígitos, resulta num número que,
Prof. MauroMicroprocessadores II
Sistemas de Numeração 21
também com N dígitos, resulta num número que, desprezando-se os dígitos mais significativos que excedem a quantidade N, é o resultado da subtração X - Y
complemento de B do número X = BN – x
Complementos: noção matemática
� Base 2 (complemento de 2):complemento de 2 de X = 2N – X (N=num.de algarismos)
Exemplo:Complemento de 2 de 00112 (4 dígitos) = 24 – 0011
= 10000 – 0011 = 1101
Prof. MauroMicroprocessadores II
Sistemas de Numeração 22
= 10000 – 0011 = 1101Prova: 1000 – 0011 = 1000 + 1101 = 10101
� Base 10 (complemento de 10):Complemento de 10 de X = 10N – X (n=num.de algarismos)
Exemplo:Complemento de 10 de 3 (2 dígitos) = 102 – 3 = 97Prova: 94 – 3 = 94 + 97 = 191
Operações binárias: subtração� Podemos efetuar a subtração binária da mesma
forma que no sistema decimal, sendo que o “vai 1” é subtraído do resultado da próxima conta
� Regras:Operação Resultado
0-0 0
Prof. MauroMicroprocessadores II
Sistemas de Numeração 23
� Exemplo:1 1 1
1000- 0011
0101
0-0 0
1-0 1
1-1 0
0-1 11 (1 e “vai 1”)
Operações binárias: subtração
� Como vimos no exemplo anterior, a subtração pelo processo normal é trabalhosa
� Por convenção e por questões de
Prof. MauroMicroprocessadores II
Sistemas de Numeração 24
� Por convenção e por questões de simplificação, o microprocessador efetua apenas a operação de adição
� Mas como efetuar subtração só dispondo da adição?� R: usando o “complemento de 2”
Subtração usando complemento de 2
� Basta somar o complemento de 2 do segundo fator ao primeiro
� Vejamos como fica a subtração anterior usando soma com complemento de 2:
Prof. MauroMicroprocessadores II
Sistemas de Numeração 25
1000 – 0011 = 1000 + complemento de 2 de 0011
1000+110110101
Despreza-se o dígito que excede a quantidade de bits que é 4
Outras operações
� Multiplicação: várias adições� Divisão: várias subtrações (adições com
complemento de 2)
Prof. MauroMicroprocessadores II
Sistemas de Numeração 26
Conversões de base
Prof. MauroMicroprocessadores II
Sistemas de Numeração 27
Conversões de base
Conversões de base
� É possível converter um valor de um sistema de numeração para outro, usando algumas regras
� Podemos usar calculadoras ou o próprio
Prof. MauroMicroprocessadores II
Sistemas de Numeração 28
� Podemos usar calculadoras ou o próprio computador para fazer essas conversões, mas é importante conhecer as regras
Conversão da base n para decimal
� Multiplicar cada dígito por nX, onde n é a base destino e x é a posição que o dígito ocupa, da direita (x=0) para a esquerda, e somar todos os resultados.
� Exemplo: converter 10102 p/ base 10
1 0 1 0
Prof. MauroMicroprocessadores II
Sistemas de Numeração 29
1 0 1 023 22 21 20
0 x 20 = 0 x 1 = 0
1 x 21 = 1 x 2 = 2
0 x 22 = 0 x 4 = 0
1 x 23 = 1 x 8 = 8
10
Portanto,10102 = 1010
Conversão da base n para decimal
� Obs.: caso n=16 (conversão da base 16 p/ decimal), substituímos cada dígito literal hexadecimal pelo seu respectivo valor decimal (A=10, B=11, C=12, D=13, E=14, F=15) na multiplicação pela potência de
Prof. MauroMicroprocessadores II
Sistemas de Numeração 30
F=15) na multiplicação pela potência de base 16, quando necessário
Conversão de decimal para base n
� Efetua-se divisões sucessivas do número decimal por n enquanto o número for maior que n. O correspondente na base n será o número formado pelo último quociente e resto das divisões, da direita para a esquerda
Prof. MauroMicroprocessadores II
Sistemas de Numeração 31
das divisões, da direita para a esquerda � Exemplo: Converter 1310 para base 2� Solução: 1310 = 11012
13 2
(1) 6 2
(0) 3 2
(1) (1)
Conversão de decimal para base n
� Obs.: caso n=16 (conversão da decimal p/ base 16), substituímos o quociente e cada resto pelo dígito literal hexadecimal correspondente (10=A, 11=B, etc.), quando necessário
Prof. MauroMicroprocessadores II
Sistemas de Numeração 32
quando necessário
Conversão de hexa para binário� É feita de forma transparente, visto que a base 16 é
potência da base 2� Cada dígito hexadecimal corresponde a quatro dígitos
binários e vice-versa� Substitui-se cada algarismo hexadecimal pelo seu
correspondente binárioExemplo:
Prof. MauroMicroprocessadores II
Sistemas de Numeração 33
� Exemplo:
0 3 C F
0000 0011 1100 1111
Tabela de conversão básica
DECIMAL HEXA BINÁRIO
0 0 0000
1 1 0001
2 2 0010
3 3 0011
DECIMAL HEXA BINÁRIO
8 8 1000
9 9 1001
10 A 1010
11 B 1011
Prof. MauroMicroprocessadores II
Sistemas de Numeração 34
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111
Outras codificações
Prof. MauroMicroprocessadores II
Sistemas de Numeração 35
Outras codificações
Codificação ASCII
� Dados não numéricos: letras, sinais ou algarismos usados em nomes de pessoa, rua, datas, códigos, etc.
� Tabela criada para representar os
Prof. MauroMicroprocessadores II
Sistemas de Numeração 36
� Tabela criada para representar os caracteres do mundo real com códigos no computador e dispositivos (teclados, displays, etc)
Codificação ASCII
� ASCII é a sigla para “American Standard Code for Information Interchange” (código padrão americano para intercâmbio de informações)
Prof. MauroMicroprocessadores II
Sistemas de Numeração 37
� Cada caractere (letras, números, símbolos, etc.) é representado por um código (1 byte)
� A tabela completa pode ser encontrada facilmente na internet
Codificação ASCIICaractere Decimal Hexa Binário
Espaço 32 20 0010 0000
( 33 21 0010 0001
+ 34 22 0010 0011
$ 35 23 0010 0100
... ... ...
Caractere Decimal Hexa Binário
A 65 41 0110 0001
B 66 42 0110 0010
C 67 43 0110 0011
D 68 44 0110 0100
E 69 45 0110 0101
Prof. MauroMicroprocessadores II
Sistemas de Numeração 38
... ... ...
0 48 30 0101 0000
1 49 31 0101 0001
2 50 32 0101 0010
3 51 33 0101 0011
4 52 34 0101 0100
5 53 35 0101 0101
... ... ...
E 69 45 0110 0101
F 70 46 0110 0110
G 71 47 0110 0111
H 72 48 0110 1000
... ... ...
Codificação BCD� Usado para representar números� Binary-Coded Decimal (decimal codificado em binário)� Usada em alguns displays LCD e outros dispositivos de
saída� Cada dígito decimal é representado pelo seu
correspondente binário de quatro bits (nibble) :
Prof. MauroMicroprocessadores II
Sistemas de Numeração 39
correspondente binário de quatro bits (nibble) :
Decimal BCD Decimal BCD
0 0000 5 0101
1 0001 6 0110
2 0010 7 0111
3 0011 8 1000
4 0100 9 1001
Codificação BCD
� Exemplo: representar 148 decimal em BCD� 1=00012
� 4=01002
� 8=10002
148 (decimal) = 0001 0100 1000 (BCD)
Prof. MauroMicroprocessadores II
Sistemas de Numeração 40
� 8=10002
� Como cada dígito em BCD tem 4 bytes e um byte tem 8 bits, para evitar desperdício, coloca-se dois BCDs em um byte (BCD comprimido)
Operações binárias
Prof. MauroMicroprocessadores II
Sistemas de Numeração 41
Operações binárias especiais
Operações binárias especiais� São operações lógicas feitas com um byte ou
palavra de dados com finalidades específicas:� Zeramento seletivo de bits� Setamento seletivo de bits� Teste de bit� Inversão seletiva de bits
Prof. MauroMicroprocessadores II
Sistemas de Numeração 42
� Inversão seletiva de bits� Deslocamento de bits� Rotação de bits
� Normalmente são feitas usando operações lógicas ou instruções da linguagem máquina envolvendo um segundo operando chamado “máscara”
Revendo as operações lógicas básicas
E (AND)
1 1 1
Qualquer outra 0
OU (OR)
0 0 0
Qualquer outra 1
Prof. MauroMicroprocessadores II
Sistemas de Numeração 43
OU EXCLUSIVO (EOR)
0 1 1
1 0 1
Qualquer outra 0
NAO (NOT)
0 1
1 0
Zeramento seletivo� É quando desejamos zerar (desligar) um ou mais
bits em um byte ou palavra de dados, sem afetar os outros bits
� Executa-se uma operação AND do operando com um byte que só tem bit zero nas posições que desejamos zerar (máscara de zeramento)
Prof. MauroMicroprocessadores II
Sistemas de Numeração 44
um byte que só tem bit zero nas posições que desejamos zerar (máscara de zeramento)
� Exemplo: zerar os bits 2 e 4 do byte10110101
and 11101011
10100001
Máscara
Setamento seletivo� É quando desejamos setar (ligar) um ou mais
bits em um byte ou palavra de dados sem afetar os outros bits
� Executa-se uma operação OU do operando com um byte que só tem bit um nas posições que desejamos setar (máscara de setamento)
Prof. MauroMicroprocessadores II
Sistemas de Numeração 45
um byte que só tem bit um nas posições que desejamos setar (máscara de setamento)
� Exemplo: ligar os bits 1 e 6 do byte10110101
or 01000010
11110111
Máscara
Teste de bit� É quando desejamos testar se um determinado
bit de um byte ou palavra de dados está ligado� Fazemos uma operação AND do operando com
um byte que só tem bit um no bit que desejamos testar� Resultado > 0 � bit ligado
Prof. MauroMicroprocessadores II
Sistemas de Numeração 46
� Resultado > 0 � bit ligado� Resultado = 0 � bit desligado
� Exemplo: testar o bit 410110101
and 00010000
00010000 Resultado > 0 � bit ligado
Máscara
Inversão seletiva de bits� É quando desejamos inverter um ou mais bits em
um byte ou palavra de dados sem afetar os outros bits
� Executa-se uma operação OU EXCLUSIVO do operando com um byte que só tem bit um nas posições que desejamos inverter (máscara de
Prof. MauroMicroprocessadores II
Sistemas de Numeração 47
operando com um byte que só tem bit um nas posições que desejamos inverter (máscara de inversão)
� Exemplo: inverter os bits 1 e 2 do byte10110101
eor 00000110
11110011
Máscara
Deslocamento de bits
� É a operação de deslocar todos os bits dentro do byte ou palavra de dados à direita ou à esquerda, sendo inserido um bit zero à esquerda ou direita, respectivamente
� Obs.:
Prof. MauroMicroprocessadores II
Sistemas de Numeração 48
� Obs.:� Deslocamento à direita é o mesmo que dividir o byte
por 2 (descartando a parte fracionária)� Deslocamento à esquerda é o mesmo que multiplicar o
byte por 2, exceto quando o bit de maior ordem é um e é perdido (vai para o carry)
Deslocamento à direita
� Um zero é inserido à esquerda (bit 7) e os outros bits são deslocados para a direita� O bit zero (resto da divisão) vai para o carry
0 0 0 0 1 0 1 10 carry
Prof. MauroMicroprocessadores II
Sistemas de Numeração 49
Resultado:
0 0 0 0 1 0 1 17 6 5 4 3 2 1 0
0 carry
0 0 0 0 0 1 0 17 6 5 4 3 2 1 0
carry=1
(11)10
(05)10 resto=1
Deslocamento à esquerda
� Um zero é inserido à direita (bit 0) e o resto é deslocado à esquerda� O bit sete vai para o carry
0 0 0 0 1 0 1 1 0carry
Prof. MauroMicroprocessadores II
Sistemas de Numeração 50
Resultado:
0 0 0 0 1 0 1 17 6 5 4 3 2 1 0
0carry
0 0 0 1 0 1 1 07 6 5 4 3 2 1 0
carry=0
(11)10
(22)10
Rotação de bits
� É a operação de “rodar” os bits dentro do byte ou palavra de dados
� É executada com instrução específica para isso na linguagem de máquinaTipos de rotação de bits:
Prof. MauroMicroprocessadores II
Sistemas de Numeração 51
� Tipos de rotação de bits:� Rotação à direita� Rotação à esquerda
� Existe a operação de rotação com o carry e sem o carry
Rotação de bits à direita
� O bit zero passa a ser o bit 7 e os outros são deslocados uma posição à direita
1 0 1 1 1 1 0 1
Prof. MauroMicroprocessadores II
Sistemas de Numeração 52
Resultado:
1 0 1 1 1 1 0 17 6 5 4 3 2 1 0
1 1 0 1 1 1 1 07 6 5 4 3 2 1 0
Rotação de bits à esquerda
� O bit 7 passa a ser o bit zero e os outros são deslocados uma posição à esquerda
1 0 1 1 1 1 0 1
Prof. MauroMicroprocessadores II
Sistemas de Numeração 53
Resultado:
1 0 1 1 1 1 0 17 6 5 4 3 2 1 0
0 1 1 1 1 0 1 17 6 5 4 3 2 1 0
Rotação de bits com o carry
� Nas rotações com o carry, o bit do carry incluído na rotação, como se fosse um nono bit do byte
1 0 1 1 1 1 0 1À direita:
Prof. MauroMicroprocessadores II
Sistemas de Numeração 54
1 0 1 1 1 1 0 17 6 5 4 3 2 1 0
1 0 1 1 1 1 0 17 6 5 4 3 2 1 0
C
C
À direita:
À esquerda:
Dúvidas ???
Prof. MauroMicroprocessadores II
Sistemas de Numeração 55
Dúvidas ???
Exercícios
� O que é um sistema de numeração?� O que é um nibble?� Quantos números binários podemos
representar com 4 dígitos?
Prof. MauroMicroprocessadores II
Sistemas de Numeração 56
representar com 4 dígitos?� Quantos números hexadecimais podemos
representar com 2 dígitos?� O que é overflow?� O que é carry?
Exercícios
� Efetuar as seguintes conversões de base:Número Base p/ base Res.
a) 00110110 2 10
b) 10111111 2 16
c) 37 10 2
Prof. MauroMicroprocessadores II
Sistemas de Numeração 57
c) 37 10 2
d) 444 10 16
e) F1 16 2
f) 300H 16 10
g) 82 10 BCD
h) 121 10 BCD
i) 11110011 BCD 10
Exercícios
� Efetue as seguintes operações, indicando se houve carry e overflow em cada uma:� 101011 + 110010� 110101 + 000111
Prof. MauroMicroprocessadores II
Sistemas de Numeração 58
110101 + 000111� 1010 – 0011 (normal e c/complemento de 2)
� Efetue a subtração 94 -12 usando soma c/ o complemento de 10 de 12
Exercícios
� Efetue as operações:� Zeramento seletivo dos bits 5 e 7 do byte
10111011 � Setamento seletivo dos bits 0 a 3 do byte
10010000
Prof. MauroMicroprocessadores II
Sistemas de Numeração 59
10010000� Teste do bit 3 no byte 01011010� Inversão dos bits 4 a 7 do byte 01101101� Desloque o byte 00001011 três bits à
esquerda� Desloque o byte 10101101 quatro bits à direita
Top Related