Help: Converteren 8 bit naar 16 bit

M

Maverickmax

Guest
Hoi

Ik heb moeite om te begrijpen waarom negatieve 8 bits om te zetten naar 16 bit?Hoe zit het positief?

Wat is het voordeel?Code:if (data & 0x0080)

data = 0xFF00; / / om te zetten naar negatief 16-bit

anders

data = data ;

eindigen
 
De meest significante bit van een ondertekend nummer is de min-bit.Zonder de aanpassing aan een 16-bits ( ' = 0xFF00') negatief een 8 bit negatief zou nog steeds een positief getal in ondertekend op 16 bit.

Omdat we willen alleen een reeks beperkte subset zetten, moeten we passen de negatieve waarde.

In een ondertekende 8 bits getal we van -128 go (0x80) door middel van -1 (0xFF) dan 0 tot 127 (0x7F).

In een ondertekende 16 bits we van -32.768 go (0x8000) via -128 (0xFF80) tot -1 (0xFFFF) dan 0 tot 127 (0x007F) naar 32767 (0x7FFF).

Zoals u kunt zien, de positieve kant hoeft geen aanpassing, maar de negatieve moet worden binnen -128 vanaf nul (0xFF80) voor de conversie naar het werk.

Probeer googlen 'tweetallen aanvulling' als u meer informatie nodig over hoe dit werkt

 
Ik kan me niet herinneren een situatie waar ik nodig had om dit te doen 'bekering' (de zogenaamde teken extensie) zelf!Waarom zou je?
Gebruik gieten [met zorg] in plaats en de compiler zal verzorgen dit voor u en zal dat efficiënter te doen.
Bijvoorbeeld:
Code:

signed char signed8 = -7;

int signed16 = (int) signed8;
 

Welcome to EDABoard.com

Sponsor

Back
Top