Cod suplimentar (reprezentarea)

Codul suplimentar pentru numerele 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 ejectat).

Aplicând aceeași idee la sistemul obișnuit număr de 10-adice afară (de exemplu, pentru un procesor ipotetic folosind sistem numeric 10-adice):

sistem numeric 10-Ung
( "Normal" post)

10-Ung sistem numeric,
cod suplimentar

Conversia la un cod suplimentar

Conversia numărul de cod suplimentar înainte implementat de următorul algoritm.

  1. În cazul în care cel mai semnificativ bit (semn) din numărul înregistrat în codul directă este egal cu 0, atunci numărul este pozitiv și nici o conversie se face;
  2. În cazul în care cel mai semnificativ (semn) bit al numărului înregistrat în codul înainte este 1, atunci numărul este negativ, numărul tuturor biți, cu excepția semnului, sunt inversate. și 1 se adaugă la rezultat.

Exemplu. -5 transforma număr negativ, înregistrat în cod direct, un cod de sub. -5 cod numeric negativ direct:

Invert biții tuturor cu excepția semnului, obținându-se astfel de cod invers (prima adăugare) -5 număr negativ:

Adăugați 1 la rezultat, obținând astfel cod adițional (a doua adăugare) -5 număr negativ:

Pentru a converti numerele negative -5 înregistrate în doi câte doi, în numărul 5 pozitiv, înregistrat în codul directă utilizează un algoritm similar. Și anume:

Invert toți biții -5 număr negativ, obținându-se astfel un număr pozitiv 4 în codul înainte:

Adăugarea 1 la rezultatul pozitiv numărul 5 get în codul directă:

Și să verifice, pliat cu un cod suplimentar

Sistemul număr invers-p-adice unei conversii număr se realizează într-un număr de cod suplimentar. De exemplu, dacă sistemul numărul 5-hexazecimal, numărul opus 00015 (110) este egal cu 44445 (-110).

Algoritmul de transformare de punere în aplicare în cod suplimentar (pentru numere de 8 biți)

Avantaje și dezavantaje

avantaje

  • Instrucțiuni generale (CPU) pentru adunare, scădere și deplasarea la dreapta pentru numere întregi semnate și nesemnate (diferența este doar în steagurile aritmetice care trebuie să fie verificate pentru a controla preaplinul ca rezultat).
  • Lipsa de "zero minus".

deficiențe

  • Un număr negativ nu poate fi citit de regulile obișnuite pentru percepția sa necesită o abilitate specială sau de calcul
  • În unele puncte de vedere (cum ar fi BCD) sau părțile componente ale acestora (de exemplu, mantisa virgulă mobilă) suplimentar de codificare inconfortabil
  • Numărul maxim Modulul nu este egal cu cel mai mic număr de modulo. De exemplu, pentru opt biți semnat întreg, numărul maxim: 12710 = 011111112. Număr minim: -12810 = 100000002. Prin urmare, există acolo pentru orice număr de opus. Operația de inversare poate necesita o verificare suplimentară.

conversie software EXEMPLU

În cazul în care datele sunt citite dintr-un fișier sau zonă de memorie, în cazul în care acestea sunt stocate în operandul destinație (de exemplu, fișierul WAVE), poate fi necesar pentru a converti bytes. În cazul în care datele sunt stocate în 8 biți, este necesar ca valorile 128-255 au fost negative.

C # .NET stil / C

extensie Sign (Engl extensie Sign.) - operarea unui număr binar, care poate crește capacitatea de a reține semnul și valoarea. Aceasta se realizează prin adăugarea de cifre de cifre semnificative. Dacă numărul este pozitiv (MSB este 0), apoi se adaugă zerouri dacă este negativ (MSB este 1) - unități.

articole similare