4.2 Virgulă fixă (întregi)

Reprezentarea în virgulă fixă este folosită pentru a stoca întregi, numerele întregi pozitive și negative: ... -3, -2, -1, 0, 1, 2, 3, .... Programele de nivel înalt, cum ar fi C și BASIC, alocă de obicei 16 biți pentru a stoca fiecare întreg. În cel mai simplu caz, 216 = 65.536 modele posibile de biți sunt atribuite numerelor de la 0 la 65.535. Acesta se numește format întreg fără semn, iar un exemplu simplificat este prezentat în figura 4-1 (folosind doar 4 biți pe număr). Conversia dintre modelul de biți și numărul reprezentat nu reprezintă altceva decât o schimbare între baza 2 (binară) și baza 10 (zecimală). Dezavantajul întregului fără semn este că numerele negative nu pot fi reprezentate.

Offset binary este similar cu întreg fără semn, cu excepția faptului că valorile zecimale sunt deplasate pentru a permite numere negative. În exemplul de 4 biți din figura 4-1, numerele zecimale sunt deplasate cu șapte, rezultând modelele de 16 biți corespunzătoare numerelor întregi de la -7 până la 8. În același mod, o reprezentare pe 16 biți ar folosi 32.767 ca un offset, rezultând într-un interval cuprins între -32.767 și 32.768. Offset binar nu este un format standard, și veți găsi alte offset-uri utilizate, cum ar fi 32.768. Cea mai importantă utilizare a offset binary este în ADC și DAC. De exemplu, intervalul de tensiune de intrare de la -5V la 5V poate fi încadrat la numerele digitale de la 0 la 4095, pentru o conversie pe 12 biți.

Sign and Magnitude reprezintă o altă modalitate simplă de reprezentare a întregilor negativi. Bitul din stânga se numește bit de semn și se face zero pentru numere pozitive și unu pentru numere negative. Ceilalți biți sunt o reprezentare binară standard a valorii absolute a numărului. Acest lucru are ca rezultat un model de biți pierdut, deoarece există două reprezentări pentru zero, 0000 (zero pozitiv) și 1000 (zero negativ). Această schemă de codificare are ca rezultat numere de 16 biți având un interval de -32.767 până la 32.767.

Figura 4-1 Formate comune pentru reprezentare în virgulă fixă (întreg).

Un întreg fără semn este un simplu format binar, dar nu poate reprezenta numere negative. Offset Binary și Sign and Magnitude permit numere negative, dar ele sunt dificil de implementat hardware. Complementul lui doi este cel mai ușor de proiectat hardware pentru el, și este cel mai comun format pentru calcule de uz generat.

Aceste prime trei reprezentări sunt simple din punct de vedere conceptual, dar dificil de implementat în hardware. Amintiți-vă, atunci când A = B + C este introdus într-un program de calculator, un inginer hardware a trebuit să-și dea seama cum să facă modelul de biți reprezentând B, combinat cu modelul de biți reprezentând C, pentru a forma modelul de biți reprezentând A.

Two's complement este formatul iubit de inginerii de hardware și este cum sunt reprezentați, de obicei, întregii în computere. Pentru a înțelege modelul de codificare, priviți mai întâi la numărul zecimal zero în figura 4-1, care corespunde unui zero binar 0000. Pe măsură ce numărăm în sus, numărul zecimal este pur și simplu echivalentul binar (0 = 0000, 1 = 0001, 2 = 0010, 3 = 0011 etc.). Acum, rețineți că acești patru biți sunt stocați într-un registru format din 4 flip-flop-uri. Dacă începem din nou la 0000 și începem să scădem, hardware-ul digital numără automat în complementul lui doi: 0 = 0000, -1 = 1111, -2 = 1110, -3 = 1101 etc. Aceasta este analog cu kilometrajul dintr-un automobil nou. Dacă este condus înainte, se schimbă: 00000, 00001, 00002, 00003 și așa mai departe. Când este condus înapoi, kilometrajul se schimbă: 00000, 99999, 99998, 99997, etc.

Folosind 16 biți, complementul lui doi poate reprezenta numere de la -32.768 la 32.767. Cel mai la stânga bit este un 0 dacă numărul este pozitiv sau zero și un 1 dacă numărul este negativ. În consecință, cel mai la stânga bit se numește bit de semn, la fel ca în reprezentarea sign & magnitude. Conversia între zecimal și complementul lui doi este simplă pentru numerele pozitive, o simplă conversie zecimal la binar. Pentru numere negative, adesea se folosește următorul algoritm: (1) luați valoarea absolută a numărului zecimal, (2) convertiți-l în binar, (3) complementați toți biții (unu devin zerouri și zerouri devin unu), 4) adăugați 1 la numărul binar. De exemplu: -5 → 5 → 0101 → 1010 → 1011. Complementul lui doi este greu pentru oameni, dar ușor pentru electronica digitală.

Secțiunea următoare: Virgula mobilă (numere reale)