Codul invers ( complementul englezesc ) este o metodă de matematică computațională care vă permite să scădeți un număr dintr-un altul folosind doar operația de adunare a numerelor naturale . Anterior, metoda era folosită în calculatoarele mecanice ( aritmometre ). Multe computere timpurii, inclusiv CDC 6600 , LINC , PDP-1 și UNIVAC 1107 , au folosit un cod invers. Majoritatea calculatoarelor moderne folosesc complementul în doi .
Codul binar invers de n biți al unui număr întreg pozitiv constă dintr-un cod de semn pe un bit (cifră binară 0) urmat de o reprezentare binară ( n -1) de biți a modulului numărului (codul invers al unui număr pozitiv este același cu codul direct).
Exemplu. Reprezentarea binară a numărului 5 este 101. Codul binar de 10 biți pentru numărul +5 este 00 0000 0101 .
Codul binar invers de n -biți al unui număr întreg negativ constă dintr-un cod de semn pe un bit (cifră binară 1) urmat de un număr binar de ( n -1) biți , care este reprezentarea inversată ( n -1) biți a modulul numărului. De remarcat că pentru a schimba semnul unui număr este suficient să inversezi toate cifrele acestuia, indiferent dacă este o cifră de semn sau una informativă.
Exemplu. Reprezentarea binară a numărului 5 este 101, reprezentarea sa binară pe 10 biți este 00 0000 0101 . Codul binar reciproc de 10 biți al lui -5 este 11 1111 1010 .
Operația de inversare este folosită și pentru a converti un număr negativ într-unul pozitiv. Aceste coduri de returnare sunt convenabile de utilizat. Ca dezavantaj, trebuie remarcat faptul că în codurile binare inverse există două coduri pentru numărul 0: „zero pozitiv” 00 0000 0000 și „ zero negativ ” 11 1111 1111 (sunt date coduri inverse pe 10 biți). Acest lucru duce la unele complicații ale operației de însumare. Prin urmare, în viitor, am trecut la coduri suplimentare pentru scrierea numerelor întregi cu semn.
Un cod invers de N - biți vă permite să reprezentați numere de la −(2 N−1 −1) la 2 N−1 −1 și un cod suplimentar - de la −2 N−1 la 2 N−1 −1.
Metoda complementului este utilizată în principal în sistemul numeric binar (baza 2 10 ). În sistemul binar, complementul ( codul invers ) se obține foarte simplu prin inversarea fiecărui bit (înlocuirea „0” cu „1” și invers). Complementul a doi ( complementul a 2 ) poate fi obținut din complementul unu (cod invers) prin adăugarea unuia la cifra cea mai puțin semnificativă (bit). [1] De exemplu, luați în considerare scăderea a două numere întregi: 100 10 − 22 10 . Fiecare număr este scris ca un cod de 8 biți, în timp ce cel mai semnificativ, al 8-lea bit este considerat un semn.
0110 0100 2 ( x egal cu zecimalul 100 10 ) − 0001 0110 2 ( y egal cu zecimala 22 10 )în metoda adunării devine suma:
0110 0100 2 ( x ) + 1110 1001 2 (primul complement y ) + 1 2 (pentru a obține al doilea complement) —————————————— 1 0100 1110 2După eliminarea celui de-al nouălea bit (cel mai semnificativ, din stânga), răspunsul este: 0100 1110 2 (acesta este un număr pozitiv egal cu zecimalul 78 10 ).