Artigos com o marcador Aritmética computacional
Aritmética computacional – parte II – Adição e Subtração
25/08/08
Numa soma os bits são somados um a um da direita para a esquerda, com os carries sendo passados para o próximo bit à esquerda. A operação de subtração usa a adição. O subtraendo é simplesmente negado antes de ser somado ao minuendo. Lembre-se que a máquina trata com números representados em complemento a 2. O exemplo a seguir mostra as operações de soma (6+7) e subtração (7-6) bit a bit entre dois números representados com 4 dígitos binários.
Como citado anteriormente, tanto a soma como a subtração podem gerar overflow ou underflow, se o resultado obtido não puder ser representado pela quantidade de bits que formam uma palavra. Se somarmos ou subtrairmos dois números com sinais contrários, nunca ocorrerá overflow ou underflow. Isto porque operandos com sinais contrários nunca
podem ser maior do que qualquer dos operandos.
O overflow ocorre quando somamos dois operandos positivos e obtemos um resultado negativo, ou vice-versa. Isto significa que utilizamos o bit de sinal, gerando um carry, para armazenar um valor pertencente ao resultado da operação. Raciocínio semelhante é realizado para detectar a ocorrência do underflow numa subtração. Neste caso, o bit de sinal também é usado para armazenar um valor pertencente ao resultado da operação.
Os projetistas de um sistema devem decidir onde tratar a ocorrência de overflow ou de underflow em operações aritméticas. Elas podem ser tratadas tanto por hardware quanto por software. Pode existir a detecção por hardware que gera uma exceção, e que depois é tratada por software.
Aritmética computacional – parte I – Números com sinal e números sem sinal
18/08/08
Estaremos nos próximos dias falando sobre a aritmética computacional, onde o objetivo é mostrar como o hardware implementa a representação dos números, os algoritmos para operações aritméticas e sua implicação no conjunto de instruções da máquina.
Números com sinal e números sem sinal
Por serem implementados com maior facilidade nos circuitos elétricos a base 2 é a mais adequada para os computadores pois trabalham somente com dois valores 0 e 1.
Ex:
Faixa de numero sem sinal para 8 bits seria: (0 a 255)
0000 0000(2) = 0(10)
0000 0001(2) = 1(10)
0000 0010(2) = 2(10)
…
1111 1100(2) = 252(10)
1111 1101(2) = 253(10)
1111 1110(2) = 254(10)
1111 1111(2) = 255(10)
Como o tamanho de uma palavra manipulada por um computador tem tamanho limitado, os números que podem ser representados também têm tamanho limitado. Se o tamanho de uma palavra é igual a n bits, o maior número possível de ser representado é igual a 2n. Se ao realizarmos operações sobre os números, elas gerarem resultados que não podem ser representados na quantidade de bits reservados ocorre o que denominados de overflow (números muito grandes) ou underflow (números muito pequenos). Tanto o overflow quanto o underflow geram exceções e são tratados pelo sistema operacional.
Representação dos números:
- Números reais: infinitos.
- No computador: finitos.
- Maioria: grande quantidade de zeros à esquerda.
- Computador: pode lidar com números até um certo tamanho.
- Overflow: tratado pelo sistema operacional.
- No computador: é preciso representar números com sinal.
Solução: usar 1 bit (sinal magnitude).
- Primeira tentativa: o bit mais significativos (MSB) é usado para sinal.
Problema: duas representações para o zero
Solução mais usada: complemento a 2
Próximo post estaremos abordando a adição e subtração, aguardem.





