Você está na página 1de 37

Agenda

Soma binria
Nmeros negativos
Intervalo de representao
Subtrao binria
Overflow
Exerccios

48

Aritmtica binria
A soma de dois nmeros binrios segue as mesmas
regras da soma no sistema decimal
Exemplo decimal
1

5
+ 4
9

7
+ 3
10

949
+ 321
1270

49

Aritmtica binria
A soma de dois nmeros binrios segue as mesmas
regras da soma no sistema decimal
Exemplo decimal
1

5
+ 4
9

7
+ 3
10

949
+ 321
1270

50

Aritmtica binria
A soma de dois nmeros binrios segue as mesmas
regras da soma no sistema decimal
Exemplo decimal
1

5
+ 4
9

7
+ 3
10

949
+ 321
1270

51

Aritmtica binria
Regras bsicas para a adio de bits
Carry

1
1

02
+ 02
02

02
+ 12
12

12
+ 02
12

12
+ 12
102 (2)

12
12
+ 12
112 (3)

52

Aritmtica binria
Regras bsicas para a adio de bits
Carry

1
1

02
+ 02
02

02
+ 12
12

12
+ 02
12

12
+ 12
102 (2)

12
12
+ 12
112 (3)

53

Aritmtica binria
Regras bsicas para a adio de bits
1
1

02
+ 02
02

02
+ 12
12

12
+ 02
12

12
+ 12
102 (2)

12
12
+ 12
112 (3)

54

Aritmtica binria
Regras bsicas para a adio de bits
Carry

1
1

02
+ 02
02

02
+ 12
12

12
+ 02
12

12
+ 12
102 (2)

12
12
+ 12
112 (3)

55

Aritmtica binria
Regras bsicas para a adio de bits
Carry

1
1

02
+ 02
02

02
+ 12
12

12
+ 02
12

12
+ 12
102 (2)

12
12
+ 12
112 (3)

Exemplos
102
+ 012

012
+ 112

01112
+ 01012

56

Aritmtica binria
Regras bsicas para a adio de bits
Carry

1
1

02
+ 02
02

02
+ 12
12

12
+ 02
12

12
+ 12
102 (2)

12
12
+ 12
112 (3)

Exemplos
11

102
+ 012
112

012
+ 112
1002

111

01112 (7)
+ 01012 (5)
11002 (12)

Obsevao

Carry pode ser 0. Mas tipicamente s aparece quando 1.


57

Aritmtica binria
Realizar as seguintes somas binrias
10012 + 10112

101002 (9 + 11 = 20)

111001112 + 110110112

1110000102 (232 + 219 = 450)

111111112 + 112

1000000102 (255 + 3 = 258)

111111112 + 111111112

1111111102 (255 + 255 = 510)

58

Aritmtica binria
Overflow
O nmero de bits utilizado para representar nmeros
em um circuito digital limitado
Portanto o intervalo de nmeros representveis
depende do nmero de bits utilizados
Se o resultado de uma operao aritmtica no pode
ser representado utilizando o nmero de bits
disponvel, ocorre um overflow
Em calculadoras apresentado como uma mensagem
de erro (e.g E ou Error) quando se trabalha com
nmeros muito grandes

59

Aritmtica binria
Overflow
Ocorre quando a soma dos bits mais significativos de
um nmero gera carry = 1
Exemplo utilizando 4 bits para operandos e resultado
Intevalo de representao: 00002 (0) 11112 (15)

10012 (9)
+ 10112 (11)

11112 (15)
+ 10002 (8)

60

Aritmtica binria
Overflow
Ocorre quando a soma dos bits mais significativos de
um nmero gera carry = 1
Exemplo utilizando 4 bits para operandos e resultado
Intevalo de representao: 00002 (0) 11112 (15)
1

11

10012 (9)
+ 10112 (11)
01002 (4)

11112 (15)
+ 10002 (8)
01112 (7)

No colocado no resultado porque ele deve conter apenas 4 bits

61

Aritmtica binria
Overflow
Verificar a ocorrncia de overflow
4 bits
11112 + 11112

11102 (14) - overflow

01012 + 01112

11002 (12) - ok

11102 + 10002

01102 (6) overflow

8 bits
101010002 + 101111012

011001012 - overflow

011010002 + 011011012

110101012 - ok
62

Aritmtica binria
Nmeros binrios negativos
At agora os nmeros eram representados sem
sinal (unsigned)
Representao binria direta. Para obter o valor decimal basta
aplicar a lei de formao: 10002 8

Essa representao deve ser expandida para


codificar os nmeros negativos
Existem vrias maneiras de representar nmeros
negativos
A representao mais utilizada em circuitos
eletrnicos para representar nmeros binrios
negativos chamada complemento de 2
63

Aritmtica binria
Representao em complemento de 2
Nessa representao, o bit mais esquerda (mais
significativo, o MSB) utilizado para indicar o sinal do
nmero (signed)
0: nmero positivo
1: nmero negativo
Exemplo
Nmeros signed de 4 bits

Positivos: 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111


Negativos: 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111

Observao importante
00012 = 1
10012 NO -1! (representao sinal/magnitude)
10012 = -7 em complemento de 2
64

Aritmtica binria
Representao em complemento de 2
O intervalo de nmeros representveis utilizando n
bits em complemento de 2 dado por
-(2n-1) a (2n-1-1)
Exemplos
4 bits

-(24-1) a (24-1-1) = -(23) a (23-1) = -8 a 7

8 bits (tipo char em C)

-(28-1) a (28-1-1) = -(27) a (27-1) = -128 a 127

16 bits

-(216-1) a (216-1-1) = -(215) a (215-1) = -32768 a 32767

32 bits (tipo int em C)

-(232-1) a (232-1-1) = -(231) a (231-1) = -2.147.483.648 a 2.147.483.647

65

Aritmtica binria

Prximo semestre!*:
Organizao de Computadores

O tamanho destes tipos bsicos


de dados da linguagem C varia
de acordo o tipo de processador
ou com o processador e com a
implementao do compilador

Um caracter ocupa normalmente


1 byte e um inteiro 4 bytes. O
padro ANSI (American National
Standards Institute) define
apenas o tamanho mnimo, mas
no o mximo.

*Engenharia da Computao, Sistemas de Informao, Cincia da Computao

66

Aritmtica binria
vdeo

67

Aritmtica binria
Representao em complemento de 2
O intervalo de nmeros representveis utilizando n
bits em complemento de 2 dado por
-(2n-1) a (2n-1-1)
Exemplos
32 bits (tipo int em C)

-(232-1) a (232-1-1) = -(231) a (231-1) = -2.147.483.648 a 2.147.483.647


maro/2016
Nmero mximo positivo que uma varivel
inteira (com sinal) de 32 bits pode alcanar

O clipe da msica Gangnam Style (https://www.youtube.com/watch?v=9bZkp7q19f0), do


cantor coreano PSY ultrapassou este limite em dezembro de 2014, obrigando o YouTube a
mudar a varivel no algoritmo do site, fazendo ela aceitar valores de at 64 bits
68

Aritmtica binria
Representao em complemento de 2
Para obter o valor decimal de um nmero binrio em
complemento de 2, utiliza-se a lei da formao com
o peso negativo do bit mais significativo (bit de sinal)
Nmero10 = -(an.bn) + + a2.b2 + a1.b1 + a0.b0
Exemplo
10012

-(1.23) + 0.22 + 0.21 + 1.20 = -8 + 0 + 0 + 1 = -7

100000012

-(1.27) + 1.20 = -128 + 1 = -127

Observao
Somente olhando para o nmero binrio, no tem
como saber se a representao direta ou em
complemento de 2. Essa informao deve ser dita em
algum lugar.
69

Aritmtica binria
Representao em complemento de 2
Nmeros representveis utilizando 3 bits
23 = 8
Direta

0002

Complemento de 2
(signed)
0

0012

0102

0112

1002

-4

1012

-3

1102

-2

1112

-1

Cdigo (unsigned)

70

Aritmtica binria
Representao em complemento de 2
Nmeros representveis utilizando 4 bits
24 = 16

Direta
(unsigned)
0

Complemento de 2
(signed)
0

00102

00112

01002

01012

01102

01112

10002

-8

10012

-7

10102

10

-6

10112

11

-5

11002

12

-4

11012

13

-3

11102

14

-2

11112

15

-1

Cdigo
00002
00012

71

Aritmtica binria
Representao em complemento de 2
Nmeros em complemento de 2 (signed)
Nmero10 = -(an.bn) + + a2.b2 + a1.b1 + a0.b0
11112
-(1.23) + 1.22 + 1.21 + 1.20 = -8 + 4 + 2 + 1 = -1

100001112
-(1.27) + 1.22 + 1.21 + 1.20 = -128 + 4 + 2 + 1 = -121

110010102
-(1.27) + 1.26 + 1.23 + 1.21 = -128 + 64 + 8 + 2 = -54

111111112
-1

72

Aritmtica binria
Representao em complemento de 2
Extenso de sinal
Usada para manter o valor correto do nmero quando ele
convertido para uma representao com mais bits
O bit de sinal replicado a fim de preencher os demais bits
Exemplo: representar os nmeros usando 8 bits
11112 (-1) 111111112 (-1)
01112 (7) 000001112 (7)

Obsevao importante
Preencher bits com 0 muda o sinal de um nmero negativo!
11112 (-1) 000011112 (15)

73

Aritmtica binria
Representao em complemento de 2
Binrio positivo binrio negativo
Inverter todos bits (complemento) e somar 1
Exemplo
01002 (4)

10112 + 12 = 11002 (-4)

11002 (-4)

00112 + 12 = 01002 (4)

74

Aritmtica binria
Representao em complemento de 2
Decimal negativo binrio em complemento de 2
Ignorar o sinal do nmero decimal e converter para binrio
utilizando o nmero de bits especificado
Inverter todos bits (complemento) e somar 1
Exemplo
Obter a representao em complemento de 2 de -39 utilizando 8
bits

001001112 (39)
110110002 + 12 = 110110012 (-39)

75

Aritmtica binria
Representao em complemento de 2
Representar usando 8 bits e em hexadecimal
-30 000111102 (30)
000111102 111000012 + 1 = 111000102 (0xE2)
-64 010000002 (64)
010000002 101111112 + 1 = 110000002 (0xC0)
-100 011001002 (100)
011001002 100110112 + 1 = 100111002 (0x9C)

-150
Fora do intervalo de representao usando 8 bits! (-128 a +127)

76

Aritmtica binria
Representao em complemento de 2
Subtrao
A operao de subtrao realizada a partir de uma soma
A - B A + (-B)

Exemplo utilizando 4 bits para operandos e resultado


3 - 1 3 + (-1)

5 - 8 5 + (-8)

00112 (3)
+ 11112 (-1)

01012 (5)
+ 10002 (-8)

77

Aritmtica binria
Representao em complemento de 2
Subtrao
A operao de subtrao realizada a partir de uma soma
A - B A + (-B)

Exemplo utilizando 4 bits para operandos e resultado


3 - 1 3 + (-1)

5 - 8 5 + (-8)

1111

00112 (3)
+ 11112 (-1)
00102 (2)

01012 (5)
+ 10002 (-8)
11012 (-3)

No colocado no resultado porque ele deve conter apenas 4 bits


78

Aritmtica binria
Representao em complemento de 2
Overflow
Exemplo utilizando 4 bits (operandos e resultado)
Intervalo de representao usando 4 bits

-(24-1) a (24-1-1) = -(23) a (23-1) = -8 a 7

79

Aritmtica binria
Representao em complemento de 2
Overflow
Exemplo utilizando 4 bits (operandos e resultado)
Intervalo de representao usando 4 bits

-(24-1) a (24-1-1) = -(23) a (23-1) = -8 a 7

01112 (7)
+ 00102 (2)

11112 (-1)
+ 10002 (-8)

80

Aritmtica binria
Representao em complemento de 2
Overflow
Exemplo utilizando 4 bits (operandos e resultado)
Intervalo de representao usando 4 bits

-(24-1) a (24-1-1) = -(23) a (23-1) = -8 a 7

11

01112 (7)
+ 00102 (2)
10012 (-7)

11112 (-1)
+ 10002 (-8)
01112 (7)

81

Aritmtica binria
Representao em complemento de 2
Overflow
O overflow pode ser detectado de 2 maneiras diferentes
Olhando os 2 ltimos carries

Se diferentes, ocorreu um overflow

Sinais dos operandos e do resultado

Se os sinais dos operandos so iguais e o do resultado diferente,


ocorreu um overflow

Exemplo utilizando 4 bits (operandos e resultado)


carries
diferentes
operandos com
mesmo sinal e
diferente do
resultado

0110

01112 (7)
+ 00102 (2)
10012 (-7)

1111

00112 (3)
+ 11112 (-1)
00102 (2)
82

Aritmtica binria
Representao em complemento de 2
Verificar a ocorrncia de overflow
4 bits (-8 a 7)
11112 + 11112

11102 (-2) ok: -1 + -1 = -2

01012 + 01112

11002 (-4) overflow: 5 + 7 = 12

10102 + 01012

11112 (-1) ok: -6 + 5 = -1

11102 + 10002

01102 (6) overflow: -2 - 8 = -10

10012 + 01102

11112 (-1) ok: -7 + 6 = -1

83

Aritmtica binria
Representao em complemento de 2
Verificar a ocorrncia de overflow
8 bits (-128 a 127)
101010002 + 101111012

011001012 (101) overflow: -88 - 67 = -155

011010002 + 011011012

110101012 (-43) overflow: 104 + 109 = 213

111111112 + 111111112

111111102 (-2) ok: -1 + -1 = -2

100000012 + 011111112

000000002 (0) ok: -127 + 127 = 0

Observao
Soma com sinais diferentes nunca d overflow

84

Você também pode gostar