logo

¿Qué es el complemento a 2 en C?

El complemento a 2 en C se genera a partir del complemento a 1 en C. Como sabemos, el complemento a 1 de un número binario se crea transformando el bit 1 en 0 y el 0 en 1; El complemento a 2 de un número binario se genera sumando uno al complemento a 1 de un número binario.

En resumen, podemos decir que el complemento a 2 en C se define como la suma del complemento a uno en C y uno.

Complemento a 2 en C

En la figura anterior, el número binario es igual a 00010100 y su complemento a uno se calcula transformando el bit 1 en 0 y el 0 en 1 viceversa. Por lo tanto, el complemento a uno se convierte en 11101011. Después de calcular el complemento a uno, calculamos el complemento a dos sumando 1 al complemento a uno, y su resultado es 11101100.

Creemos un programa en complemento a 2.

 #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++)>

Producción

Complemento a 2 en C

Análisis del programa anterior,

  • Primero, ingresamos el número de bits y se almacena en el archivo ' norte ' variable.
  • Después de ingresar el número de bits, declaramos la matriz de caracteres, es decir, carácter binario[n+1], que contiene el número binario. El ' norte ' es el número de bits que ingresamos en el paso anterior; Básicamente define el tamaño de la matriz.
  • Declaramos dos matrices más, es decir, un complemento[n+1] , y doscomplemento[n+1]. El un complemento[n+1] matriz contiene el complemento a unos de un número binario mientras que el doscomplemento[n+1] matriz contiene el complemento a dos de un número binario.
  • Inicializar el llevar variable y asignar 1 valor a esta variable.
  • Después de las declaraciones, ingresamos el número binario.
  • Ahora, simplemente calculamos el complemento a uno de un número binario. Para ello creamos un bucle que itera a lo largo de la matriz binaria, para(int i=0;i. En el bucle for, se verifica la condición si el bit es 1 o 0. Si el bit es 1, entonces un complemento[i]=0 demás un complemento[i]=1 . De esta forma se genera el complemento a uno de un número binario.
  • Después de calcular el complemento a uno, generamos el complemento a 2 de un número binario. Para ello creamos un bucle que itera desde el último elemento hasta el elemento inicial. En el bucle for, tenemos tres condiciones:
    • Si el bit del complemento uno [i] es 1 y el valor del acarreo es 1, entonces ponemos 0 en el complemento dos [i].
    • Si el bit de un complemento [i] es 0 y el valor de acarreo es 1, entonces ponemos 1 en dos complementos [i] y 0 en acarreo.
    • Si las dos condiciones anteriores son falsas, entonces un complemento [i] es igual a dos complementos [i].

Enteros con signo se representan frecuentemente en C usando el notación en complemento a dos . usando lo mismo representación binaria ofrece un mecanismo para expresar ambos positivo y enteros negativos . El bit más significativo (MSB) se utiliza como el bit de signo en un representación en complemento a dos , dónde 0 denota un entero positivo , y 1 denota un numero negativo .

Comenzando con un números negativos valor absoluto en forma binaria, puede tomar la complemento a uno (negación bit a bit) de ese valor para obtener el complemento a dos representación de la entero negativo . Añades 1 hacia valor resultante adquirir la representación de la complemento a dos .

El codificación en complemento a dos en C puede representar enteros con signo y puede realizar operaciones aritméticas rápidas. Un beneficio de emplear el complemento a dos es la capacidad de hacer suma y sustracción utilizando las mismas operaciones binarias que para los números sin signo.

El numeros binarios se suman como enteros sin signo al sumar el complemento a dos. Una comida para llevar desde la ubicación del bit crítico principal simplemente se ignora. Debido a este hecho, el manejo números firmados de otra manera no es necesario y la suma se vuelve simple.

Considere agregar -5 y -3 utilizando el complemento a dos de 8 bits representación, por ejemplo:

número binario para -5 es 11111011.

número binario para -3 es 11111101 .

realizando la suma:

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

La respuesta es 111110100 , En cual complemento a dos es igual a -8 .

De manera similar a la suma, la resta se puede realizar tratando la segundo operando complemento a dos como si fuera una suma. En otras palabras, sumas el complemento a dos de un número negativo al primer operando para eliminarlo.

Por ejemplo, cuando -3 se resta de -5 :

En binario, -5 está representado por 11111011 y -(-3) por 00000011 (complemento a dos de -3 )

Realizando la resta

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

El resultado es 11111110 , que en complemento a dos es igual a -8 .

Conclusión:

En C, el complemento a 2 es una representación binaria de un número negativo que se crea sumando uno al complemento a 1 . Los sistemas informáticos emplean con frecuencia esta idea para representar números con signo y realizar operaciones aritméticas de manera eficiente.

Para obtener el complemento a 2 de un entero binario, primero se debe determinar el complemento a 1 del número volteando los bits. Posteriormente, la representación del complemento a 2 se obtiene por agregando uno hacia complemento a 1 . El bit más significativo (MSB) funcionará como un bit de signo al expresar si un número es positivo o negativo .

El cálculo de la complemento a 2 para un entero binario dado se muestra en el programa C adjunto. Se solicita al usuario que ingrese tanto el número binario y el número de bits. Después de eso, el programa realiza los procedimientos necesarios para adquirir el complemento a 1, y luego el complemento a 2 . Luego se muestran los hallazgos.

En informática y programación, es crucial comprender el complemento a 2 representación ya que permite manejar valores negativos expresados ​​en binario de manera efectiva. Hace suma resta , y operaciones lógicas más simple en ambos positivo y números negativos . El rango de enteros representables es simétrico respecto cero debido a la complemento a 2 representación, haciéndolo apropiado para diversas operaciones numéricas.

Los programadores pueden realizar operaciones aritméticas, trabajar con datos binarios y diseñar algoritmos utilizando números enteros con signo en C y otros lenguajes de programación al comprender la idea del complemento a 2 y utilizarla adecuadamente.