logo

Qual é o complemento de 2s em C?

O complemento de 2s em C é gerado a partir do complemento de 1s em C. Como sabemos que o complemento de 1s de um número binário é criado pela transformação do bit 1 em 0 e de 0 em 1; o complemento de 2 de um número binário é gerado adicionando um ao complemento de 1 de um número binário.

Resumindo, podemos dizer que o complemento de 2s em C é definido como a soma do complemento de um em C e um.

Complemento de 2s em C

Na figura acima, o número binário é igual a 00010100, e seu complemento é calculado transformando o bit 1 em 0 e 0 em 1 vice-versa. Portanto, o complemento de alguém passa a ser 11101011. Depois de calcular o complemento de um, calculamos o complemento de dois adicionando 1 ao complemento de um, e seu resultado é 11101100.

Vamos criar um programa de complemento de 2s.

 #include int main() { int n; // variable declaration printf('Enter the number of bits do you want to enter :'); scanf('%d',&n); char binary[n+1]; // binary array declaration; char onescomplement[n+1]; // onescomplement array declaration char twoscomplement[n+1]; // twoscomplement array declaration int carry=1; // variable initialization printf('
Enter the binary number : '); scanf('%s', binary); printf('%s', binary); printf('
The ones complement of the binary number is :&apos;); // Finding onescomplement in C for(int i=0;i<n;i++) { if(binary[i]="=&apos;0&apos;)" onescomplement[i]="1" ; else } onescomplement[n]="" printf('%s',onescomplement); printf('
the twos complement of a binary number is : '); finding twoscomplement in c for(int i="n-1;">=0; i--) { if(onescomplement[i] == &apos;1&apos; &amp;&amp; carry == 1) { twoscomplement[i] = &apos;0&apos;; } else if(onescomplement[i] == &apos;0&apos; &amp;&amp; carry == 1) { twoscomplement[i] = &apos;1&apos;; carry = 0; } else { twoscomplement[i] = onescomplement[i]; } } twoscomplement[n]=&apos;&apos;; printf(&apos;%s&apos;,twoscomplement); return 0; } </n;i++)>

Saída

Complemento de 2s em C

Análise do programa acima,

  • Primeiro, inserimos o número de bits e ele é armazenado no ' n ' variável.
  • Após inserir o número de bits, declaramos o array de caracteres, ou seja, caractere binário[n+1], que contém o número binário. O ' n 'é o número de bits que inserimos na etapa anterior; basicamente define o tamanho do array.
  • Declaramos mais dois arrays, ou seja, complemento[n+1] , e complemento de dois[n+1]. O complemento[n+1] array contém o complemento das unidades de um número binário enquanto o complemento de dois[n+1] array contém o complemento de dois de um número binário.
  • Inicialize o carregar variável e atribua 1 valor a esta variável.
  • Após as declarações, inserimos o número binário.
  • Agora, simplesmente calculamos o complemento de um número binário. Para fazer isso, criamos um laço que itera por toda a matriz binária, para(int i=0;i. No loop for, a condição é verificada se o bit é 1 ou 0. Se o bit for 1, então complemento[i]=0 outro complemento[i]=1 . Desta forma, é gerado o complemento de um número binário.
  • Depois de calcular o complemento, geramos o complemento 2s de um número binário. Para fazer isso, criamos um laço que itera do último elemento para o elemento inicial. No loop for, temos três condições:
    • Se o bit de onecomplement[i] for 1 e o valor de carry for 1 então colocamos 0 em twocomplement[i].
    • Se o bit de complemento de uns[i] for 0 e o valor de carry for 1, então colocamos 1 em complemento de dois[i] e 0 em carry.
    • Se as duas condições acima forem falsas, então complemento de unidade[i] é igual a complemento de dois[i].

Inteiros assinados são frequentemente representados em C usando o notação de complemento de dois . Usando o mesmo representação binária oferece um mecanismo para expressar ambos positivo e inteiros negativos . O bit mais significativo (MSB) é usado como bit de sinal em um representação em complemento de dois , onde 0 denota um número inteiro positivo , e 1 denota um número negativo .

Começando com um números negativos valor absoluto na forma binária, você pode tomar o complemento de alguém (negação bit a bit) desse valor para obter o complemento de dois representação do número inteiro negativo . Você adiciona 1 para o valor resultante adquirir a representação do complemento de dois .

O codificação em complemento de dois em C pode representar inteiros assinados e pode realizar operações aritméticas rápidas. Um benefício de empregar o complemento de dois é a capacidade de fazer Adição e subtração usando as mesmas operações binárias que para números sem sinal.

O números binários são somados como inteiros sem sinal ao adicionar complemento de dois. Uma realização a partir do local do bit crítico principal é simplesmente desconsiderado. Devido a esse fato, o manuseio números assinados diferentemente não é necessário e a adição torna-se simples.

Considere adicionar -5 e -3 usando o Complemento de dois de 8 bits representação, por exemplo:

Número binário para -5 é 11111011.

Número binário para -3 é 11111101 .

realizando a adição:

 11111011 (-5) + 11111101 (-3) ------------- 111110100 (-8) 

A resposta é 111110100 , Em que complemento de dois é igual a -8 .

Semelhante à adição, a subtração pode ser feita tratando o segundo operando complemento de dois como se fosse uma adição. Em outras palavras, você adiciona o complemento de dois de um número negativo ao primeiro operando para removê-lo.

Por exemplo, quando -3 é subtraído de -5 :

Em binário, -5 é representado por 11111011 e -(-3) por 00000011 (complemento de dois de -3 )

Fazendo a subtração

 11111011 (-5) + 00000011 (+3) ------------- 11111110 (-8) 

O resultado é 11111110 , que em complemento de dois é igual a -8 .

Conclusão:

Em C, o Complemento de 2s é uma representação binária de um número negativo que é criado adicionando um ao Complemento de 1s . Os sistemas de computador freqüentemente empregam essa ideia para representar números assinados e realizar operações aritméticas com eficiência.

Para obter o Complemento de 2s de um número inteiro binário, deve-se primeiro determinar o Complemento de 1s do número invertendo os bits. Depois disso, a representação do Complemento de 2s é obtido por adicionando um para o Complemento de 1s . O bit mais significativo (MSB) funcionará como um bit de sinal, expressando se um número é positivo ou negativo .

O cálculo do Complemento de 2s para um determinado número inteiro binário é mostrado no programa C anexado. O usuário é solicitado a inserir os dois número binário e o número de bits. Depois disso, o programa faz os procedimentos necessários para adquirir o complemento de 1s, e em seguida o Complemento de 2s . As descobertas são então mostradas.

Na ciência da computação e na programação, é crucial compreender o Complemento de 2s representação, pois permite lidar eficazmente com valores negativos expressos em binário. Faz adição subtração , e operações lógicas mais simples em ambos positivo e números negativos . O alcance de inteiros representáveis é simétrico em relação a zero devido ao Complemento de 2s representação, tornando-o apropriado para diversas operações numéricas.

Os programadores podem realizar operações aritméticas, trabalhar com dados binários e projetar algoritmos usando números inteiros assinados em C e outras linguagens de programação, compreendendo a ideia de complemento de 2s e utilizando-a adequadamente.