Curso Livre de Arquitetura de Computadores/Caderno 8: Aritmética do Computador

Fonte: Wikiversidade

Principais pontos[editar | editar código-fonte]

A seguir, as duas principais questões para falar-se sobre aritmética do computador:

  • Modo que os números são representados (formato binário);
  • Algoritmos utilizados para operações aritméticas básicas (adição, subtração, multiplicação, divisão);

Essas duas questões também levam em consideração os inteiros de ponto flutuante, sendo que eles servem para expressar números muito pequenos ou números muito grandes resultantes de operações aritméticas.[1]


ALU - (Arithmetic and logic unit ou A Unidade lógica e aritmética)[editar | editar código-fonte]

A ALU ou ULA como também é conhecida, é a parte do computador que realiza todas as operações aritméticas sobre os dados. Os demais elementos do computador, unidade de controle, registradores, memória, E/S entre outros existem para trazer os dados até a ALU para que ela possa processá-los e após isso devolver para os mesmos elementos para levar a informação processada de volta. Todos os componentes do computador são baseados no uso de dispositivos lógicos digitais simples que podem armazenar dígitos binários e realizar operações lógicas booleanas simples.[1]


Representação de inteiros[editar | editar código-fonte]

Falando em sistema numérico binário, qualquer número pode ser representado por: dígitos zero e um, sinal de menos, virgula ou vírgula fracionada. Para questões de armazenamento e processamento no computador, não tem-se o luxo de sinais de menos e vírgulas, somente dígitos binários (0 e 1) que podem ser utilizados para representar tudo mais.[1]


Representação em sinal-magnitude[editar | editar código-fonte]

Com a existência de várias convenções alternativas usadas para representar os números inteiros negativos e também positivos, todas envolvem o tratamento do bit mais significativo, ou seja, o bit mais à esquerda na palavra como um bit de sinal. Se o bit de sinal for 0, o número é positivo, se for 1, o número será negativo. A representação sinal-magnitude é a forma mais simples que emprega o bit de sinal.[1]

Uma das desvantagens presentes no sinal-magnitude, uma deles é que existem duas representações do 0:

  • 1000: Quando o 0 for negativo;
  • 0000: Quando o 0 for positivo.

Outra desvantagem é que adição e a subtração exigem uma consideração dos sinais dos números e de suas relativas magnitudes para executar a operação exigida.[1]

Representação em complemento a dois[editar | editar código-fonte]

Assim como sinal -magnitude, a representação de complemento de dois utiliza o bit mais significativo como um bit de sinal, tornando mais fácil testar se um inteiro é positivo ou negativo. Ela difere do uso da representação sinal -magnitude no modo como os outros bits são interpretados.[1]

Características da representação e aritmética de complemento a dois[editar | editar código-fonte]

  • Intervalo: -2n-1 até 2n-1-1;
  • Número de representações de zero: Possui apenas uma que é 0000;
  • Negação: Apanhe o complemento booleano de cada bit do número positivo correspondente, depois some 1 ao padrão de bits resultante visto como um inteiro sem sinal;
  • Expansão do tamanho em bits: Acrescente posições de bit adicionais à esquerda e preencha com o valor do bit de sinal original;
  • Regra de overflow: Se dois números com o mesmo sinal (positivo ou negativo) são somados, então o estouro ocorre se e somente se o resultado tem o sinal oposto;
  • Regra de subtração: Para subtrair B de A, apanhe o complemento a dois de B e some-o a A.[1]

Convertendo entre diferentes tamanhos em bits[editar | editar código-fonte]

Às vezes, é desejável que um inteiro de n bits seja armazenado em m bits, onde m > n. Na notação sinal-magnitude, isso é feito com facilidade: basta mover o bit de sinal para a posição mais à esquerda e preencher com zeros.[1]

Representação em ponto fixo[editar | editar código-fonte]

A vírgula (binária) é fixa na posição à direita do bit menos significativo, com isso é possível usar a mesma representação para frações binárias, escalando os números de modo que a vírgula binária seja implicitamente posicionado em algum outro local.[1]


Referências