2017-03-20 3 views
0

Ich habe diesen Code: (unter der Annahme, kurze Ints sind 16 Bit breit, und ints sind 32 Bit breit)Bit Padding (C)

short int x = -5; 
int y; 
y = x; 

Hat Polsterung auf der linken Seite mit dem Vorzeichenbit zu erhöhen Präzision der Änderung Wert einer negativen Zahl?

+1

Es gibt höchstwahrscheinlich keine Auffüllung. – Olaf

+0

Können Sie bitte erklären, warum kein Padding vorhanden ist –

+0

'x' wird während der Zuweisung zu' y' vorzeichenerweitert. Der Wert, der als eine Ganzzahl mit Vorzeichen interpretiert wird, ändert sich nicht. –

Antwort

2

Wird Padding (Vorzeichenerweiterung) auf der linken Seite mit dem Vorzeichenbit zur Erhöhung der Genauigkeit den Wert einer negativen Zahl ändern?

Ange acount @Amin Negm-Awad, wenn eine Variable von einem Typ zum anderen zugewiesen wird, und der Wert ist darstellbare in beiden Typen, wie -5 wie in int oder short, gibt es keinen Wert noch Präzisionsänderung.

Dies gilt, wenn ein Typ int ist, short, char, float usw. Es gilt auch, wenn Integer-Typ 2-Komplement ist oder nicht. Die Größe des Typs macht keinen Unterschied. Endian macht keinen Unterschied, der Wert bleibt erhalten.