Curso Livre de Arquitetura de Computadores/Caderno 8: Aritmética do Computador
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]