• Nenhum resultado encontrado

Introdução a Ciência da Computação Representação números inteiros

N/A
N/A
Protected

Academic year: 2022

Share "Introdução a Ciência da Computação Representação números inteiros"

Copied!
68
0
0

Texto

(1)

Introdução a Ciência da Computação

Representação números inteiros

Elverton Fazzion

2017/02

(2)

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)

(3)

Representação binária

Converter imagem para digital

2 cores: 0 preto e 1 branco

(4)

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

(5)

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)

(6)

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

(7)

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

(8)

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

(9)

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?

(10)

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?

(11)

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

(12)

Representação inteiro positivo

● Como podemos representar números positivos em um computador?

○ Nós já vimos isso ...

(13)

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

... ...

(14)

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

... ...

(15)

Representação inteiro negativo

● E negativos?

(16)

Representação inteiro negativo

● E negativos?

Inteiro decimal Binário

... 1 ...

-2 1010

-1 1001

-0 1000

+0 0000

1 0001

2 0010

... 0 ...

(17)

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

(18)

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

(19)

Aritmética em Sinal e Magnitude

● Como fazer somas?

(20)

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

(21)

Aritmética em Sinal e Magnitude

● Como fazer subtrações?

(22)

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

(23)

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.

(24)

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

(25)

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

(26)

EXCESSO DE K

(27)

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

(28)

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

(29)

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

(30)

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)

(31)

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?

(32)

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’

(33)

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)

(34)

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

(35)

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

(36)

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

(37)

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

(38)

COMPLEMENTO A UM

(39)

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

b

onde 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

(40)

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)

(41)

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)

(42)

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

(43)

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 negativa

Decimal Binário

-3 100

-2 101

-1 110

-0 111

+0 000

1 001

2 010

3 011

Inverte-se os bits

(44)

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

(45)

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

(46)

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)

(47)

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

(48)

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.

(49)

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

(50)

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

(51)

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

(52)

COMPLEMENTO A DOIS

(53)

O que é complemento a base?

● O complemento a base de um número x na base b (x’) é dado por:

x + x’ = 100...00

b

Exemplos:

Complemento a 10: 74510 = 100010 - 74510 = 25510

Complemento a 16: 5AF16 = 100016 - 5AF16 = A5116

Complemento a 2: 1100012 = 10000002 - 1100012 = 0011112

(54)

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)

(55)

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)

(56)

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

2

para 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

(57)

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

(58)

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

(59)

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)

(60)

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

(61)

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)

(62)

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

(63)

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

(64)

OVERFLOW

(65)

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

(66)

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

(67)

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

(68)

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)

Referências

Documentos relacionados

A idéia de introduzir códigos universais adaptativos (UA) consiste em combinar dois ou mais códigos com padrão, de modo que o código adaptativo resultante se beneficie das

Números inteiros: conjunto Z e seus subconjuntos, representação dos números inteiros na reta numerada, valor absoluto de um número inteiro, operações com números inteiros

Rum Branco (white rum), gin, xarope de Laranja (orange syrup, sumo de lima (lime juice), Campari, Licor de Amora (blackberry

Desde que as proposições possam assumir apenas dois valores, pode-se expressar todas as saídas possíveis através de uma tabela:. Maurício Moreira Neto UFC LÓGICA DIGITAL 2 31

● Fitas >> Disquetes >> Discos (CD/DVD) >> Pendrive >> Computação em Nuvem. ● Interação com

Números inteiros: conjunto Z e seus subconjuntos, representação dos números inteiros na reta numerada, valor absoluto de um número inteiro, operações com números inteiros

Máquina de Tabular Utilizava cartões perfurados para armazenar dados Herman Hollerith (1860-1929) História da Informática. Odhner inventou uma série de máquinas de

Breve do Papa Pio V de confirmação da mercê dada pelo Infante Cardeal aos padres da Companhia de Jesus no que diz respeito à administração perpétua do Colégio do Espírito Santo