Doplněk 2s v C je generován z doplňku 1 v C. Jak víme, že doplněk 1s binárního čísla je vytvořen transformací bitu 1 na 0 a 0 na 1; 2s doplněk binárního čísla je generován přidáním jedničky k 1s doplňku binárního čísla.
Stručně lze říci, že doplněk 2s v C je definován jako součet jedničkového doplňku v C a jedničky.
Na obrázku výše je binární číslo rovno 00010100 a jeho jedničkový doplněk se vypočítá transformací bitu 1 na 0 a 0 na 1 naopak. Proto se něčí doplněk stane 11101011. Po výpočtu něčího doplňku vypočítáme dvojkový doplněk tak, že k doplňku jedničky přičteme 1 a výsledkem je 11101100.
Vytvořme program doplňku 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]="