Complemento para doisEm computação, complemento para dois ou complemento de dois é um tipo de representação binária de números com sinal amplamente usada nas arquiteturas dos dispositivos computacionais modernos. O complemento de dois de um número de N bits é definido como o complemento em relação a 2N. Para calcular o complemento de dois de um número, basta subtrair este número de 2N, que em binário é representado por um seguido de N zeros. Outro método é calcular o complemento de um e somar um ao valor. O bit mais significativo (MSB) é o que informa o sinal do número. Se este dígito for o número é positivo, e se for é negativo.[1] Os números são escritos da seguinte forma:
Desta maneira, só existe uma representação para o número zero (). As vantagens do uso do complemento de 2 é que existe somente um zero e que as regras para soma e subtração são as mesmas. A desvantagem é o fato de ser um código assimétrico, porque o número de representações negativas é maior que o número de representações positivas. Por exemplo, com oito bits em complemento para 2 podemos representar os números decimais de -128 a +127.[2] Algoritmos para obtenção do complemento de 2Para se obter o complemento de 2 de um número binário, a regra geral nos diz para subtrair cada algarismo de 2. Por causa da particularidade dos números binários (subtrair de 1 cada bit é o mesmo que inverter todos os bits - e é o mesmo que tirar o complemento de 1), para obter o C2 de um número obtemos primeiro o complemento de um (invertendo os bits) e depois somamos 1 ao resultado, já que (2-N) = (1-N)+1[3] Existe outra maneira de usar o complemento a dois. Vamos supor que temos um número binário 101110, começando da direita para esquerda você vai repetindo o número (para a esquerda) até encontrar o número 1, depois que encontrá-lo repita-o e passe a inverter o restante. Continuado o nosso exemplo: Número: 101110
Outro número: 1101
ExemplosTabela exemplo para números binários (4 digitos) representados em complemento de 2:
Note que com quatro dígitos (bits) não é possível representar o número 8 positivo, porém o número 8 negativo (-8) permanece. Assim conseguimos representar 16 valores com quatro bits (2^4) Ver também
|