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.
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 :'); // Finding onescomplement in C for(int i=0;i<n;i++) { if(binary[i]="='0')" onescomplement[i]="1" ; else } onescomplement[n]="