Ajutor: Conversia de 8 biţi la 16 biţi

M

Maverickmax

Guest
Salut

I sînt dificultăţi în a înţelege de ce negativ 8 biţi converti la 16 de biţi?Ce zici de pozitiv?

Care este beneficiul?Cod:în cazul în care (date & 0x0080)

de date = 0xFF00; / / converti la 16-bit negativă

alt

de date = de date ;

final
 
De biţi cele mai importante ale unui număr este semnat de biţi minus.Fără a adaptarea la un pic 16 ( ' = 0xFF00') negativ un pic 8 negativ ar fi în continuare să fie un număr pozitiv în a semnat 16 de biţi.

Pentru ca avem numai nevoie la spre convertizor o subcategorie gamă limitată, avem nevoie de a ajusta valoarea negativă.

Într-un număr de 8 biţi a semnat sa mergem de la -128 (0x80), prin intermediul -1 (0xFF), apoi 0 - 127 (0x7F).

Într-o a semnat 16 de biţi sa mergem de la -32,768 (0x8000), prin intermediul -128 (0xFF80) la -1 (0xFFFF), apoi la 0 la 127 (0x007F) la 32767 (0x7FFF).

După cum puteţi vedea, partea pozitivă nevoie de nici o ajustare, dar trebuie să fie negativ în termen de -128 de la zero (0xFF80) pentru conversia la locul de muncă.

Încercaţi googling "doi câte doi completează" dacă aveţi nevoie de mai multe informaţii despre modul în care funcţionează acest

 
Nu-mi amintesc o situaţie în care am nevoie pentru a face acest lucru "conversie" (numit extensie semn) mine!De ce ai?
Utilizaţi turnare [cu grijă] loc şi compilatorul va avea grijă de acest lucru pentru dumneavoastră şi vă va face acest lucru mai eficient.
De exemplu:
Cod:

a semnat char signed8 = -7;

int signed16 = (int) signed8;
 

Welcome to EDABoard.com

Sponsor

Back
Top