Cod suplimentar (reprezentare numerică)

De la Seo Wiki - optimizarea motorului de căutare și programare

Un cod suplimentar (twos-complement) este cel mai comun mod de a reprezenta numerele negative în computere. Vă permite să înlocuiți operația de scădere cu operația de adăugare și să efectuați operațiile de adăugare și scădere aceleași pentru numerele semnate și nesemnate, ceea ce simplifică arhitectura calculatorului. Un cod suplimentar al unui număr negativ poate fi obținut inversând modulul numărului binar (prima adăugare) și adăugând unul la inversiune (a doua adăugare). Sau scăzând un număr de la zero.






Codul adițional (în plus față de 2) al numărului binar este obținut prin adăugarea lui 1 la cea mai mică cifră semnificativă a complementului său la 1. [1]

Adăugarea la 2 numere binare este definită ca valoarea obținută prin scăderea numărului de la cea mai mare putere a două (de la 2 N pentru complementul N-bit la 2). [2]

Reprezentarea numărului în codul suplimentar

Când scrieți un număr în codul suplimentar, este semnat cel mai mic bit. Dacă valoarea lui este 0, atunci în biții rămași este scris un număr pozitiv binar. coincide cu codul direct. Dacă bitul semn este 1, atunci în biții rămași este scris un număr binar negativ, convertit într-un cod suplimentar. Pentru a obține o valoare care este opusă semnului, toate cifrele, inclusiv cele semnate, sunt inversate și apoi se adaugă la rezultat.

Un număr binar pe 8 biți semnat în codul suplimentar poate reprezenta orice număr întreg cuprins între -128 și +127. Dacă cel mai semnificativ bit este zero, atunci cel mai mare întreg care poate fi scris în restul de 7 biți este 2 ^ 7-1, care este egal cu 127.

Codul reprezentării binare (8 biți)

Conversia codului suplimentar

Conversia unui număr de la un cod direct la altul este realizată utilizând următorul algoritm.







  1. Dacă numărul înscris în codul forward este pozitiv, atunci se adaugă cea mai mare (semnată) cifră, iar acest lucru completează conversia;
  2. Dacă numărul înscris în codul înainte este negativ, atunci toate cifrele numărului sunt inversate. iar rezultatul se adaugă la 1. Cifra cea mai mare (semnată) se adaugă la numărul rezultat, egală cu 1.

Un exemplu. Transformați numărul negativ -5, înscris în codul direct, într-un număr suplimentar. Codul direct al numărului -5, luat modulo:

Inversați toate cifrele numărului, obținând astfel codul invers.

Adăugați la rezultatul 1

Să notăm semnul singular

Același algoritm este folosit pentru transformarea inversă. Și anume:

Inversați toate cifrele numărului, obținând astfel codul invers.

Adăugați la rezultatul 1 și bifați, adăugând cu cod suplimentar

Cod suplimentar pentru numere zecimale

Același principiu poate fi utilizat în reprezentarea pe calculator a numerelor zecimale: pentru fiecare evacuare cifră X se înlocuiește cu 9-X, și numărul rezultat se adaugă la 1. De exemplu, atunci când se utilizează un număr de patru cifre este înlocuit cu -0081 9919 (9919 + 0081 = 0000, a cincea descărcare este aruncat).

Implementarea conversiei în cod invers

Avantaje și dezavantaje

avantaje

  • Același registru poate stoca atât un număr pozitiv n-bit, cât și un număr semnalizat (n-1) -bit, operații de adăugare, scădere și schimbare la stânga comune pentru ambele formate.
  • Ambalarea mai convenabilă a numerelor în câmpurile de biți.
  • Absența numărului "minus zero".

deficiențe

  • Codul suplimentar nu este evident pentru începători.
  • În formate complexe (cum ar fi virgulă plutitoare sau cod zecimal binar), majoritatea beneficiilor sunt anulate.
  • Modulul celui mai mare număr nu este egal cu modulul celui mai mic număr. Exemplu: Un număr întreg semnat este de 1 octet. Numărul maxim este: 12710 == 7F16 == 011111112. Numărul minim este -12810 == 8016, codul adițional == 100000002, codul suplimentar. În consecință, nu pentru nici un număr există contrariul. Funcționarea schimbării semnului necesită o verificare suplimentară.

Exemplu de conversie software

Dacă citiți date dintr-un fișier sau din zona de memorie, unde este stocată într-un cod extensie binar (de exemplu, un fișier WAVE), este posibil să fie necesară conversia octeților. Dacă datele sunt stocate în 8 biți, valorile 128-255 trebuie să fie negative.

C # .NET / C stil

Instrumente personale
Servicii SEO
instrumente


Servit în 0.317 secunde.







Trimiteți-le prietenilor: