Erklären Sie das Verhalten von 1-Bit-Bitfeldern

7
%Vor%

Ausgabe:

-1 2 2

Bitte erläutern Sie die Ausgabe des Programms?

    
dark_shadow 10.04.2012, 18:58
quelle

3 Antworten

8

Vermutlich ist die einzige merkwürdige Ausgabe die erste.

Nun, betrachte den Wertebereich, den eine 1-Bit Zweierkomplement Ganzzahl darstellen kann.

    
Oliver Charlesworth 10.04.2012, 19:01
quelle
9

bit1 ist eine vorzeichenbehaftete 1-Bit-Ganzzahl, die nur die Werte -1 und 0 enthalten kann.

    
Daniel Fischer 10.04.2012 19:01
quelle
2

Beachten Sie die folgende Aussage die Struktur:

int bit1: 1; - & gt; 'int' zeigt an dass es eine SIGNIERTE Ganzzahl ist. Für Ganzzahlen mit Vorzeichen wird das linke Bit als Vorzeichen verwendet. Wenn Sie 1 in 1-Bit-Feld speichern: Das linke Bit ist 1, also das System behandelt den Wert als negative Zahl.

Die Zweierkomplement-Methode ist vom System verwendet, um die negative Werte.

Daher sind die gespeicherten Daten 1. Das Zweierkomplement von 1 ist ebenfalls 1 (negativ).

Daher wird -1 gedruckt.

Wenn Sie ein 2-in-4-Bit-Feld speichern: Binary 2: 0010 (das letzte Bit ist 0, Das System wird es als positiven Wert behandeln.) 0010 ist 2 Daher wird 2 gedruckt.

    
Amitesh Purohit 03.10.2012 10:04
quelle

Tags und Links