logo

Co to jest uzupełnienie 2s w C?

Dopełnienie 2s w C jest generowane z dopełnienia 1s w C. Jak wiemy, uzupełnienie 1s liczby binarnej jest tworzone poprzez przekształcenie bitu 1 na 0 i 0 na 1; uzupełnienie 2s liczby binarnej jest generowane przez dodanie jedynki do uzupełnienia 1s liczby binarnej.

Krótko mówiąc, możemy powiedzieć, że uzupełnienie do 2s w C definiuje się jako sumę dopełnienia do jedynki w C i jeden.

Uzupełnienie 2s w C

Na powyższym rysunku liczba binarna jest równa 00010100, a jej uzupełnienie jest obliczane poprzez transformację bitu 1 na 0 i 0 na 1 odwrotnie. Dlatego dopełnienie wynosi 11101011. Po obliczeniu dopełnienia do dwóch obliczamy dopełnienie do dwóch, dodając 1 do dopełnienia do jedynki, otrzymując wynik 11101100.

Stwórzmy program uzupełnienia do dwójki.

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

Wyjście

Uzupełnienie 2s w C

Analiza powyższego programu,

  • Najpierw wprowadzamy liczbę bitów i jest ona zapisywana w „ N ' zmienny.
  • Po wpisaniu ilości bitów deklarujemy tablicę znaków, czyli: znak binarny[n+1], który przechowuje liczbę binarną. „ N ' to liczba bitów, którą wprowadziliśmy w poprzednim kroku; zasadniczo określa rozmiar tablicy.
  • Deklarujemy jeszcze dwie tablice, tj. jedenkomplement[n+1] , I dwadopełnienia[n+1]. The jedenkomplement[n+1] array przechowuje uzupełnienie jedności liczby binarnej, podczas gdy dwadopełnienia[n+1] array przechowuje uzupełnienie do dwójki liczby binarnej.
  • Zainicjuj nosić zmienną i przypisz 1 wartość do tej zmiennej.
  • Po deklaracjach wprowadzamy liczbę binarną.
  • Teraz po prostu obliczamy uzupełnienie jedności liczby binarnej. W tym celu tworzymy plik pętla który wykonuje iterację po tablicy binarnej, for(int i=0;i. W pętli for sprawdzany jest warunek, czy bit ma wartość 1, czy 0. Jeśli bit ma wartość 1, to jedenkomplement[i]=0 w przeciwnym razie jedenkomplement[i]=1 . W ten sposób generowane jest uzupełnienie liczby binarnej.
  • Po obliczeniu uzupełnienia generujemy uzupełnienie do 2 liczby binarnej. W tym celu tworzymy plik pętla który iteruje od ostatniego elementu do elementu początkowego. W pętli for mamy trzy warunki:
    • Jeśli bit jednego uzupełnienia [i] wynosi 1, a wartość przeniesienia wynosi 1, wówczas wstawiamy 0 do dwóch uzupełnień [i].
    • Jeśli bit jednego uzupełnienia [i] wynosi 0, a wartość przeniesienia wynosi 1, wówczas wstawimy 1 do dwóch uzupełnień [i] i 0 do przeniesienia.
    • Jeśli powyższe dwa warunki są fałszywe, wówczas jeden dopełnienie[i] równa się dwóm dopełnieniu[i].

Liczby całkowite ze znakiem są często reprezentowane w C za pomocą notacja uzupełnienia do dwóch . Używając tego samego reprezentacja binarna oferuje mechanizm wyrażania obu pozytywny I ujemne liczby całkowite . The najbardziej znaczący bit (MSB) jest używany jako podpisz bit w reprezentacja uzupełnienia do dwóch , Gdzie 0 oznacza Dodatnia liczba całkowita , I 1 oznacza Liczba ujemna .

Zaczynając od A liczby ujemne wartość bezwzględna w formie binarnej, możesz przyjąć uzupełnienie (negacja bitowa) tej wartości, aby uzyskać uzupełnienie dwójki reprezentacja ujemna liczba całkowita . Dodajesz 1 do wynikowa wartość nabyć reprezentację uzupełnienie dwójki .

The kodowanie z uzupełnieniem do dwóch w C może reprezentować liczby całkowite ze znakiem i potrafi wykonywać szybkie operacje arytmetyczne. Jedną z korzyści płynących z zastosowania uzupełnienia dwójki jest zdolność do działania dodatek I odejmowanie stosując te same operacje binarne, co w przypadku liczb bez znaku.

The liczby binarne są dodawane razem jak liczby całkowite bez znaku podczas dodawania uzupełnienia do dwójki. Przeprowadzka z lokalizacji główny bit krytyczny jest po prostu lekceważony. Z tego powodu obsługa podpisane numery inaczej nie jest konieczne, a dodawanie staje się proste.

Rozważ dodanie -5 I -3 używając 8-bitowe uzupełnienie do dwójki reprezentacja, na przykład:

Liczba binarna dla -5 Jest 11111011.

Liczba binarna dla -3 Jest 11111101 .

wykonanie dodawania:

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

Odpowiedź to 111110100 , w którym uzupełnienie dwójki jest równe -8 .

Podobnie jak dodawanie, odejmowanie można wykonać poprzez obróbkę drugi operand uzupełnienie do dwóch, jakby było dodawaniem. Innymi słowy, do pierwszego operandu dodajesz uzupełnienie do dwóch liczby ujemnej, aby go usunąć.

Na przykład kiedy -3 jest odejmowane -5 :

W wersji binarnej -5 jest reprezentowany przez 11111011 I -(-3) przez 00000011 (dopełnienie do dwóch -3 )

Przeprowadzanie odejmowania

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

Wynik jest taki 11111110 , co w uzupełnieniu do dwóch jest równe -8 .

Wniosek:

W C, uzupełnienie 2s jest binarną reprezentacją liczby ujemnej utworzoną przez dodanie jedynki do Uzupełnienie 1s . Systemy komputerowe często wykorzystują tę ideę do przedstawiania liczb ze znakiem i wydajnego wykonywania operacji arytmetycznych.

Aby uzyskać uzupełnienie 2s binarnej liczby całkowitej, należy najpierw określić Uzupełnienie 1s liczby poprzez odwrócenie bitów. Następnie reprezentacja uzupełnienie 2s uzyskuje się przez dodanie jednego do Uzupełnienie 1s . The najbardziej znaczący bit (MSB) będzie działać jako bit znaku, wyrażając, czy liczba jest pozytywny Lub negatywny .

Obliczenie uzupełnienie 2s dla danej binarnej liczby całkowitej pokazano w załączonym programie w C. Użytkownik jest proszony o wprowadzenie obu Liczba binarna i liczbę bitów. Następnie program wykonuje wymagane procedury w celu uzyskania dopełnienia do jedynki, a następnie uzupełnienie 2s . Następnie pokazane są ustalenia.

W informatyce i programowaniu niezwykle istotne jest zrozumienie uzupełnienie 2s reprezentację, ponieważ umożliwia efektywną obsługę wartości ujemnych wyrażonych binarnie. To sprawia, że dodawanie odejmowanie , I operacje logiczne prostsze w obu przypadkach pozytywny I liczby ujemne . Zakres reprezentowalne liczby całkowite jest symetryczny w stosunku do zero z powodu uzupełnienie 2s reprezentacji, dzięki czemu nadaje się do różnych operacji numerycznych.

Programiści mogą przeprowadzać operacje arytmetyczne, pracować z danymi binarnymi i projektować algorytmy przy użyciu liczb całkowitych ze znakiem w C i innych językach programowania, rozumiejąc ideę uzupełnienia do dwójek i właściwie ją wykorzystując.