Aritmética não decimal
- Números inteiros, sem limite de tamanho e positivos (sem sinal).
- Sem limite de tamanho não se preocupa com overflow
- Adição decimal:
- 0 + 0 = 0, 0 + 1 = 1, 0 + 2 = 2,..., 1 + 8 = 9, 1 + 9 = 10, vai um.
- Adição binária:
- 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, 1 + 1 = 0, vai um.
Exemplo:
45 101101
+ 55 110111
----- --------
100 1100100
37 0100101
+ 87 1010111
----- --------
124 1111100
Adição na base 8
Exemplo:
2631
+ 3256
-------
6107
422
+ 361
-------
1003
Adição na base 16
Exemplo:
3A53D
+ 1B012
-------
5554F
Subtração na base 10
Diferença = minuendo - subtraendo
Se o algarismo do subtraendo é menor que o do minuendo, precisa fazer um empréstimo do primeiro algarismo diferente de zero existente à esquerda.
145
- 32
-----
113
145
- 36
-----
109
105
- 17
-----
088
Subtração na base 2
101101
- 100111
--------
000110
100110001
- 010101101
-----------
010000100
Não consegue representar números negativos !
Subtração na base 8
7214
- 3276
--------
3716
Subtração na base 16
6C3AD6
- 2E5169
--------
3DE96D
Soma e subtração de números fracionários na base 2
101101,01 = 45,25
+ 100111,11 = 39,75
-----------
1010101,00 = 85,00
101101,01 = 45,25
- 100111,11 = 39,25
-----------
000101,10 = 5,50
Números com sinal
Com n dígitos binários, podemos representar 2n valores diferentes de inteiros sem sinal.
Exemplo: Utilizando-se 3 dígitos:
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
Representações para números com sinal:
- sinal e magnitude
- complemento a um
- complemento a dois
Sinal e magnitude
O bit mais à esquerda é o sinal e os restantes fornecem a magnitude do número.
--------------------
| Sinal | Magnitude |
--------------------
0 para números positivos e 1 para números negativos
Exemplo:
00000101 = +5
10000101 = -5
Faixa de valores com n dígitos: -(2n-1-1) a + (2n-1-1).
Para n=4 teremos a faixa -7 a +7
Porque não é utilizado pelos processadores ?
- duas representações para o zero, por exemplo, 0000 e 1000.
- processo de adição e subtração complicado
Algoritmo de soma:
- Verificam-se os sinais dos números e efetua-se uma comparação entre eles
- Se ambos possuem o mesmo sinal, somam-se as magnitudes e o sinal do resultado é o mesmo das parcelas
- Se os números possuem sinais diferentes:
- identifica-se a maior das magnitudes e registra-se o seu sinal
- subtrai-se a magnitude menor da maior
- o sinal do resultado é igual ao sinal de maior magnitude
Exemplo utilizando-se 6 bits na base 2:
10 001010
+ 15 001111
----- --------
+ 25 011001
- 18 110010
- 4 100100
----- --------
- 22 110110
+ 15 001111
- 4 100100
----- --------
+ 11 001011
- 18 110010
+ 10 001010
----- --------
- 8 101000
Algoritmo de subtração:
- Troca-se o sinal do subtraendo
- Executa algoritmo de soma
Exemplo: -18 - (+12)= -18 + (-12)
- 18 110010
- 12 101100
----- --------
- 30 111110
Custo: 1 elemento para soma e outro para subtração
Velocidade: manipulação de sinal