Introdução a Ciência da Computação
Representação números inteiros
Elverton Fazzion
2017/02
Representação binária
● Sistemas digitais reconhecem apenas 0’s e 1’s
○ Conceito de bit já visto anteriormente …
Memória RAM
Endereço 0 (Byte 0)
...
Endereço 1 (Byte 1)
Representação binária
Converter imagem para digital
2 cores: 0 preto e 1 branco
Representação binária
Endereço 0 (Byte 0)
0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0
Endereço 1 (Byte 1) Endereço 2 (Byte 2)
Memória RAM
Representação binária
Endereço 0 (Byte 0)
0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0
Endereço 1 (Byte 1) Endereço 2 (Byte 2)
Memória RAM
Nosso objetivo é representar números inteiros
(positivos e negativos)
Números em ASC II
● Já vimos um pouco sobre ASC II
○ A codificação ASC II define um mapeamento entre um caractere para uma sequência de bits
● Podemos representar números em ASC II 89 = 00111000 00111001
8 9
Números em ASC II
● Já vimos um pouco sobre ASC II
○ A codificação ASC II define um mapeamento entre um caractere para uma sequência de bits
● Podemos representar números em ASC II 89 = 00111000 00111001
8 9
EXISTE UM PROBLEMA ...
Números em ASC II
● Já vimos um pouco sobre ASC II
○ A codificação ASC II define um mapeamento entre um caractere para uma sequência de bits
● Podemos representar números em ASC II 89 = 00111000 00111001
8 9
EXISTE UM PROBLEMA …
ARMAZENAMENTO
Números em ASC II
Dígitos Bits
1 8
2 16
3 24
... ...
n 8*n
● Para armazenar 1 bilhão (10 dígitos) precisamos de 80 bits.
○ Como fazer melhor?
Números em ASC II
Dígitos Bits
1 8
2 16
3 24
... ...
n 8*n
● Para armazenar 1 bilhão (10 dígitos) precisamos de 80 bits.
○ Como fazer melhor?
● Quantos bits precisamos para representar 1 bilhão de valores distintos?
Números em ASC II
Dígitos Bits
1 8
2 16
3 24
... ...
n 8*n
● Para armazenar 1 bilhão (10 dígitos) precisamos de 80 bits.
○ Como fazer melhor?
● Quantos bits precisamos para representar 1 bilhão de valores distintos? 30 bits
Representação inteiro positivo
● Como podemos representar números positivos em um computador?
○ Nós já vimos isso ...
Representação inteiro positivo
● Como podemos representar números positivos em um computador?
○ Nós já vimos isso …
● Usando o sistema de numeração binário
Inteiro decimal Binário
0 000
1 001
2 010
3 011
... ...
Representação inteiro positivo
● Usando o sistema de numeração binário
○ Com 32 bits podemos representar 4.2 bilhões de valores
○ Em ASC II seriam 80 bits
○ Economia de 48 bits … (muita coisa)
Inteiro decimal Binário
0 000
1 001
2 010
3 011
... ...
Representação inteiro negativo
● E negativos?
Representação inteiro negativo
● E negativos?
Inteiro decimal Binário
... 1 ...
-2 1010
-1 1001
-0 1000
+0 0000
1 0001
2 0010
... 0 ...
Representação inteiro negativo
● E negativos?
Inteiro decimal Binário
... 1 ...
-2 1010
-1 1001
-0 1000
+0 0000
1 0001
2 0010
... 0 ...
Bit de sinal
0 positivo e 1 é negativo
Representação em Sinal e Magnitude
● Representação em Sinal e Magnitude
○ Se n bits são utilizados para representar um número, 1 bit representa o sinal e n-1 bits representam a magnitude
0 1 0 1 1 1 0 1
Magnitude = 5 Magnitude = 5
Sinal positivo Sinal negativo
Decimal 5
s b ... b
Sinal Magnitude
Decimal -5
Aritmética em Sinal e Magnitude
● Como fazer somas?
0 0 0 1
+ 1 1 0 1
1 0 1 1
Aritmética em Sinal e Magnitude
● Como fazer somas?
○ Verifica-se o bit de sinal
■ Sinais iguais: Separa o bit de sinal e faz a soma os números normalmente. O sinal do resultado é o bit de magnitude os operandos.
■ Sinais diferentes: Considere os números sem o bit de sinal. Faça o menor valor como subtraendo e realize a subtração. O sinal do resultado é o bit do maior número sem o bit de sinal.
0 0 1 0
+ 0 1 0 1
0 1 1 1
1 1 0 1
+ 1 0 1 0
1 1 1 1
Bit de sinal iguais
1 1 0 1
- 0 0 1 0
1 0 1 1
Bit de sinal diferentes
Minuendo: maior valor Subtraendo: menor valor
Bit do minuendo Bit de sinal
iguais
Aritmética em Sinal e Magnitude
● Como fazer subtrações?
Aritmética em Sinal e Magnitude
● Como fazer subtrações?
○ Basta trocar o sinal do subtraendo e fazer os passos da soma
0 0 1 0
+ 0 0 1 0
0 1 0 0
0 1 0 1
- 1 0 0 1
0 1 0 0
Bit de sinal
0010 - 1010 = 0010 + 0010 = 0100 0101 - 0001 = 0101 + 1001 = 1110
Bit de sinal
Aritmética em Sinal e Magnitude
● Multiplicação
○ Faz a multiplicação normalmente, ignorando os bits de sinal dos números
○ O bit de sinal do resultado é 1 se os bits de magnitude dos números forem diferentes e 0 caso contrário.
● Divisão
○ Faz a divisão normalmente, ignorando os bits de sinal dos números
○ O bit de magnitude do resultado é 1 se os bits de sinal dos números forem diferentes e 0 caso contrário.
Aritmética em Sinal e Magnitude
0 0 1 0 + 1 0 1 1 0 1 0 0 1 0 0 0 0
1 0 0 1 1 0
0010 x 1011 = 1110
Bits de sinal diferentes
Bits adicionados (representação de de 4 bits sendo 1 de sinal)
0010 / 1010 = 1001
0 1 0 0 1 0 - 0 1 0 0 0 1
0 0 0
Bits descartados (representação de 4 bits sendo 1 de sinal)
Bits de sinal diferentes
Desvantagens do Sinal e Magnitude
● O zero tem duas representações
○ Exemplo com 4 bits: 0000 e 1000
○ Problema para o programador
● Muita manipulação com bit de sinal para realizar contas
○ Para realizar uma soma, tem que comparar o bit de sinal
○ A depender dos bits de sinal, realizar uma soma ou uma subtração
○ Hardware fica mais complexo
● Outras abordagens para representar inteiros
○ Excesso de k
○ Complemento a um
○ Complemento a dois
EXCESSO DE K
Representação em Excesso de k
● Essa representação utiliza um parâmetro k
○ Esse k particiona o conjunto formado pelos n bits utilizados
○ Define o menor negativo (-k)
○ Temos k-1 números negativos, um zero e 2n - k números positivos
○ Tem apenas um valor para o 0
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
K = 7
Negativos Positivos
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
-4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11
Negativos K =4 Positivos
Representação em Excesso de k
O número X na representação em excesso de k é dado por X’ = X+k
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
K = 7
Negativos Positivos
X = -410
X' = -410 + 710 = 310 310 = 00112
X = 410
X' = 410 + 710 = 1110 1110 = 10112
X = 010
X' = 010 + 710 = 710 710 = 01112
Aritmética em Excesso de k
● Dado dois números em excesso de k, X' e Y', a soma é bem simples
○ Basta somar os números X' e Y'
○ Como ambos têm k somado, temos que subtrair k
X’ + Y’ = X + k + Y + k = X + Y + 2*k (X + Y)’ = X + Y + k
Logo, basta subtrair k de X + Y + 2*k e temos X + Y + k
Aritmética em Excesso de k
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
K = 7
Negativos Positivos
X’ = 00102(-5) e Y’ = 01012(-2) X’ + Y’ = 00102 + 01012 = 01112 Subtraindo o excesso k=7 (01112) X’ + Y’ = 01112 - 01112 = 00002 (-7)
X’ = 01002(-3) e Y’ = 10012(2) X’ + Y’ = 01002 + 10012 = 11012 Subtraindo o excesso k=7 (01112) X’ + Y’ = 11012 - 01112 = 01102 (-1)
Aritmética em Excesso de k
● Para realizar subtrações é fácil
○ Inverte o sinal do subtraendo e soma normalmente
○ Como invertemos o sinal de um número em excesso de k?
Aritmética em Excesso de k
● Para realizar subtrações é fácil
○ Inverte o sinal do subtraendo e soma normalmente
○ Como invertemos o sinal de um número em excesso de k?
○ Dado um número X’ em Excesso de k, seu inverso é 2*k - X’
Temos X’ = X + k e queremos (-X)' = (-X) + k X’ = X + k pode ser reescrito como -X = k - X’
Substituindo na equação que queremos (-X)’ = k - X’ + k = 2*k - X’
Aritmética em Excesso de k
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
K = 7
Negativos Positivos
X’ = 00102 (-5) e Y’ = 01012 (-2) (-Y)' = 11102 - 01012 = 10012 (2)
X’ - Y’ = X’ + (-Y)’ = 00102 + 10012 = 10112 Subtraindo o excesso k=7 (01112)
X’ + Y’ = 01112 - 01112 = 00002 (-7)
Aritmética em Excesso de k
● Segue um algoritmo para multiplicação e divisão
○ Recupera o valor absoluto dos operandos
○ Transforma os operandos em binário subtraindo k
○ Realiza a conta em binário
○ Soma k ao resultado para transformar em Excesso de k
○ A depender dos sinais, é necessário realizar uma inversão
Aritmética em Excesso de k
X’ = 00112(-4) e Y’ = 01012(-2)
(-X)’ = 11102 - 00112= 10112 (4) e X = 10112 - 01112 = 01002 (4 em binário) (-Y)’ = 11102 - 01012= 10012 (2) e Y = 10012 - 01112= 00102 (2 em binário)
X * Y = 10002 (8) + 01112 (excesso k) = 11112 (8 em Excesso de k) (ambos negativos, não precisa inverter o sinal)
X / Y = 00102 (8) + 01112 (excesso k) = 10012 (2 em Excesso de k) (ambos negativos, não precisa inverter o sinal)
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
K = 7
Negativos Positivos
Extensão de sinal
● Extensão de sinal significa aumentar o número de bits da representação
○ Útil para padronizar o tamanho dos números para realizar operações em hardware (similar a acrescentar zeros a esquerda
● Em Sinal e Magnitude, a extensão de sinal não é direta
○ Deve-se acrescentar 0’s a esquerda e o bit mais significativo (sinal) deve receber o sinal correto
1 1 0 1
Número -5 em Sinal e Magnitude com 4 bits
1 0 0 1 0 1
Número -5 em Sinal e Magnitude com 6 bits 0’s a esquerda
Sinal
Extensão de sinal
● Em Excesso de k é direto (em partes)
○
Porém existe o problema que devemos variar o valor de k para aumentar o número de negativos○ Porém variar o k não é trivial pois mudamos toda a representação
000 001 010 011 100 101 110 111
-3 -2 -1 0 1 2 3 4
K = 3
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12
K = 3 Extensão direta mas
aumentamos apenas o número de positivos
COMPLEMENTO A UM
O que é complemento a base - 1?
● O complemento a base - 1 de um número x na base b (x’) é dado por:
x + x’ = ddd...d
bonde d é o maior dígito da base b
Exemplos:
➔ Complemento a 9: 745
10 = 99910 - 74510 = 25410
➔ Complemento a 15: 5AF16 = FFF16 - 5AF16 = A5016
➔ Complemento a 1: 1100012 = 1111112 - 1100012 = 0011102
Complemento é útil na subtração
● O processo de subtração entre dois números (x-y) em complemento a base - 1 é:
○ Calcula o complemento de y (y’)
○ Calcula o resultado r = x + y’
○ Incrementa r em 1
○ Ignora o dígito mais significativo de r
4 5 3
- 3 9 8
0 5 5
4 5 3
+ 6 0 1
1 0 6 4
+ 1
1 0 5 5
5 2 1
- 0 5 9
4 6 2
5 2 1
+ 9 4 0
1 4 6 1
+ 1
1 4 6 2
Exemplo complemento a 9 (base 10) Exemplo complemento a 9 (base 10)
Complemento é útil na subtração
● O processo de subtração entre dois números (x-y) em complemento a base - 1 é:
○ Calcula o complemento de y (y’)
○ Calcula o resultado r = x + y’
○ Incrementa r em 1
○ Ignora o dígito mais significativo de r
1 0 1
- 0 1 0
0 1 1
1 0 1
+ 1 0 1
1 0 1 0
+ 1
1 0 1 1
1 1 1
- 1 1 1
0 0 0
1 1 1
+ 0 0 0
1 1 1
+ 1
1 0 0 0
Exemplo complemento a 1 (base 2) Exemplo complemento a 1 (base 2)
Complemento é útil na subtração
● Qual a intuição por trás dessa subtração?
Suponha o exemplo anterior do complemento a 9 (base 10) onde temos X = 453 e Y = 398
X10 - Y10 = 45310 - 39810 = 5510 O que fizemos foi:
X10 + (99910 - Y10) + 110 - 100010 = X 10+ 100010 - Y10 - 100010 = X10 - Y10
Ou seja, simplemente adicionamos e subtraímos 1000 de um jeito mais elaborado na conta
Representação em Complemento a um
● Essa ideia é interessante …
○
Calcular complemento a um de x na base 2 é fácil: basta inverter os bits○
Podemos fazer o complemento a um número como sua forma negativaDecimal Binário
-3 100
-2 101
-1 110
-0 111
+0 000
1 001
2 010
3 011
Inverte-se os bits
Representação em Complemento a um
● O bit mais significativo é o de sinal (unicidade)
○ Sem o sinal, 1100 (12) que teria complemento de um 0011 (-12) entraria em conflito com o número +3 que também é 0011
○ Como a representação negativa inverte os bits, garantimos uma única representação positiva e negativa para cada número
Decimal Binário
-3 100
-2 101
-1 110
-0 111
+0 000
1 001
2 010
3 011
Inverte-se os bits
Representação em Complemento a um
● O bit mais significativo é o de sinal (unicidade)
○ Ou seja, para n bits, temos 2n-1 números positivos e 2n-1 negativos
Decimal Binário
-3 100
-2 101
-1 110
-0 111
+0 000
1 001
2 010
3 011
Inverte-se os bits
sinal
Aritmética em Complemento a um
● Como fazer uma soma?
○ Basta somar os binários normalmente
○ Se tiver um “vai um” na última casa, somamos esse “um” no resultado para obter o número correto (end-around carry)
0 1 0 (2) + 0 0 1 (1) 0 1 1 (3)
1 0 1 (-2) + 1 0 1 (-2)
1 0 1 0
+ 1
0 1 1 (-4) 1 0 1 (-2)
+ 0 1 1 (3) 1 0 0 0
+ 1
0 0 1 (1) 1 0 1 (-2)
+ 0 0 1 (1) 1 1 0 (-1)
Aritmética em Complemento a um
● Por que o algoritmo funciona?
○ A base está na definição de complemento que vimos
○ O que fazemos com o end-around carry é subtrair 2n e somar 1 ao resultado
Aritmética em Complemento a um
● Temos que verificar caso a caso considerando n bits para representação
○ Soma de dois positivos X e Y: a soma é direta
○ Soma de um positivo X com um negativo Y
■ Se X > Y então
X + (-Y) = X + Y’ = X + (2n - 1 - Y) = (X - Y) + 2n - 1
O termo (X - Y) é o resultado que queremos pois ele já está na sua forma positiva.
O que temos que fazer é apenas anular o último termo somando - 2n + 1
■ Se Y > X então
X + (-Y) = X + Y’ = X + (2n - 1 - Y) = 2n - 1 - (Y - X)
O termo (Y - X) é o resultado em sua forma positiva. Como Y > X, então o resultado é negativo.
Essa transformação já está embutida dado que subtraímos o resultado de 2n - 1.
Aritmética em Complemento a um
● Temos que verificar caso a caso considerando n bits para representação
○ Soma de dois negativos X e Y
- X + (-Y) = X’ + Y’ = (2n - 1 - X) + (2n - 1 - Y) = [2n - 1 - (X+Y)] + 2n -1 O termo (X + Y) é o resultado em sua forma positiva. Como ambos são negativos, o resultado deve estar na forma negativa, que está embutida na expressão entre colchetes.
Temos apenas que anular o último termo somando - 2n + 1
Aritmética em Complemento a um
● Como fazer uma subtração?
○ Basta inverter o subtraendo e realizar o algoritmo da soma
0 1 0 (2) - 0 0 1 (1)
0 1 0 (2) + 1 1 0 (-1)
1 0 0 0
+ 1
0 0 1 (1) Inverte o
subtraendo e faz uma soma
Aritmética em Complemento a um
● Como fazer multiplicação e divisão?
○ Converta os números para binário
○ Realize o cálculo e verifique os sinais dos operandos
■ Se forem iguais, o resultado está pronto.
■ Se forem diferentes, converta o resultado para a sua forma negativa em complemento a um (inverte os bits)
● Extensão de sinal
○ Positivo: acrescenta 0 a esquerda
○ Negativo: os 0’s a esquerda da representação positiva viram 1
○ Resumo: apenas replicar o bit mais significativo
1 1 0 1
Número -2 em Complemento a um com 4 bits
1 1 1 1 0 1
Número -2 em Complemento a um com 6 bits
COMPLEMENTO A DOIS
O que é complemento a base?
● O complemento a base de um número x na base b (x’) é dado por:
x + x’ = 100...00
bExemplos:
➔ Complemento a 10: 74510 = 100010 - 74510 = 25510
➔ Complemento a 16: 5AF16 = 100016 - 5AF16 = A5116
➔ Complemento a 2: 1100012 = 10000002 - 1100012 = 0011112
Complemento a base vs a base - 1
● Ambos são úteis na subtração
○ A diferença é que não precisamos somar 1 no resultado antes de ignorar o dígito mais significativo
○ Esse 1 já está embutido no complemento do número
4 5 3
- 3 9 8
0 5 5
4 5 3
+ 6 0 2
1 0 5 5
Exemplo complemento a 10 (base 10)
4 5 3
- 3 9 8
0 5 5
4 5 3
+ 6 0 1
1 0 5 4
+ 1
1 0 5 5
Exemplo complemento a 9 (base 10)
Complemento a base vs a base - 1
● Ambos são úteis na subtração
○ A diferença é que não precisamos somar 1 no resultado antes de ignorar o dígito mais significativo
○ Esse 1 já está embutido no complemento do número
1 0 1
- 0 1 0
0 1 1
1 0 1
+ 1 1 0
1 0 1 1
Exemplo complemento a 2 (base 2)
1 0 1
- 0 1 0
0 1 1
1 0 1
+ 1 0 1
1 0 1 0
+ 1
1 0 1 1
Exemplo complemento a 1 (base 2)
Representação em Complemento a dois
● Como no complemento a um, utilizamos o complemento a dois de um número como sua representação negativa
○ Para calcular o complemento a dois de um número basta inverter todos os bits e somar 1
○ Equivalente a subtrair o número positivo de 2n onde n é o número de bits utilizados na representação
● Exemplo: Calcular o complemento a dois do número positivo 010
2para uma representação com 3 bits
1 0 0 0
- 0 1 0
0 1 1 0
1 0 1
+ 1
0 1 1 0
OU
Inverte-se os bits e soma 1 Subtrai o número
de 2n
Representação em Complemento a dois
Decimal Binário
-3 101
-2 110
-1 111
-0 000
+0 000
1 001
2 010
3 011
Zero tem uma única representação
● Exemplo de complemento a dois com 3 bits
Representação em Complemento a dois
Decimal Binário
-4 100
-3 101
-2 110
-1 111
-0 000
+0 000
1 001
2 010
3 011
● Exemplo de complemento a dois com 3 bits
Ganhamos um negativo
Aritmética em Complemento a dois
● Como fazer uma soma?
○ Basta somar os binários normalmente (não existe end-around carry)
0 1 0 (2) + 0 0 1 (1) 0 1 1 (3)
1 1 0 (-2) + 1 1 0 (-2)
1 0 0 0 1 1 0 (-2)
+ 0 1 1 (3) 1 0 0 1 (1) 1 1 0 (-2)
+ 0 0 1 (1) 1 1 1 (-1)
Aritmética em Complemento a dois
● Por que o algoritmo funciona?
○ Temos os mesmos casos do complemento a um
○ Porém, nos casos de end-around carry em que subtraímos 2n e somamos 1, no complemento a dois subtraímos apenas 2n
● Ou seja, fica mais simples de implementar em hardware
Aritmética em Complemento a dois
● Como fazer uma subtração?
○ Mesma ideia do complemento a um
○ Basta converter o subtraendo para sua forma negativa e realizar o algoritmo da soma
0 1 0 (2) - 0 0 1 (1)
0 1 0 (2) + 1 1 1 (-1)
1 0 0 1 (1)
Aritmética em Complemento a dois
● Como fazer multiplicação e divisão?
○ Converta os números para binário
○ Realize o cálculo e verifique os sinais dos operandos
■ Se forem iguais, o resultado está pronto.
■ Se forem diferentes, converta o resultado para a sua forma negativa em complemento a dois
● Extensão de sinal
○ Igual ao complemento a um: apenas replicar o bit mais significativo
1 1 1 0
Número -2 em Complemento a dois com 4 bits
1 1 1 1 1 0
Número -2 em Complemento a dois com 6 bits
Aritmética em Complemento a dois
● Como fazer multiplicação e divisão?
○ Converta os números para binário
○ Realize o cálculo e verifique os sinais dos operandos
■ Se forem iguais, o resultado está pronto.
■ Se forem diferentes, converta o resultado para a sua forma negativa em complemento a dois
● Extensão de sinal
○ Igual ao complemento a um: apenas replicar o bit mais significativo
1 1 1 0
Número -2 em Complemento a dois com 4 bits
1 1 1 1 1 0
Número -2 em Complemento a dois com 6 bits
Existem algoritmos de multiplicação e divisão
especializados em complemento a dois que não serão vistos nesse
curso
OVERFLOW
O que é overflow ...
● O termo overflow refere-se a algo que extrapolou o limite
○ Em computação tem overflow aritmético, overflow de buffer, …
○ O fato essencial é saber identificar quanto houve um overflow
● No nosso estudo estamos interessados nas operações básicas: soma, subtração, multiplicação e divisão
● Um overflow acontece em operações que aumentam o valor do número
○ Soma e multiplicação
● A seguir veremos como identificar overflow de soma nas
representações que vimos
Identificando overflow de soma nas representações
● Ocorre overflow em uma soma em complemento a dois um overflow quando
○ Somamos dois números positivos e encontramos um número negativo
○ Somamos dois números negativos e encontramos um número positivo
1 1 0 (-2) + 1 0 1 (-3) 0 1 1 (3)
0 1 1 (3) + 0 1 1 (3) 1 1 0 (-2)
Operações aritméticas com overflow em complemeto a dois com 3 bits
Identificando overflow de soma nas representações
● Complemento a um: Se aplicam as mesmas regras de overflow para complemento a dois
● Sinal e Magnitude: Ocorre quando a soma das magnitudes resulta em um "vai 1" no último dígito
0 1 1 1 (7) + 0 1 0 1 (5) 1 1 0 0 (-4) Bit de sinal
Vai 1
Operações aritméticas com overflow em sinal e magnitude com 4 bits
1 1 1 1 (-7) + 1 1 0 1 (-5) 1 1 0 0 (-4) Bit de sinal
Vai 1
Identificando overflow de soma nas representações
● Excesso de k: A soma é feita direta em binário e, ao final, subtraímos k do resultado. Temos overflow quando:
○ Quando a soma direta fica abaixo de k (antes da etapa de subtrair k)
○ Quando o resultado final (já subtraído k) ultrapassa o valor de 2n-1
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
0 0 0 1 (-6) + 0 0 1 0 (-5)
0 0 1 1
Operações aritméticas com overflow
1 1 1 1 (8) + 1 1 0 1 (6) 1 1 1 0 0 1 0 1 0 1
Subtrai 111 (k=7) 111 (k=7) é maior que 0011 (3)
10101 (21) ultrapassa o maior valor de 1111 (15)