2012-04-02 8 views
1

Wie kann ich die Bytes/Bits einer Variablen in C sehen? In Bezug auf Binär, nur Nullen und Einsen.Betrachten Sie die Bytes/Bits einer Variablen in C

Mein Problem ist, dass ich testen möchte, ob im höchstwertigen Byte der Variablen x irgendwelche Nullen existieren. Jede Hilfe wäre willkommen.

Antwort

3

Verwenden Sie den logischen UND-Operator &. Zum Beispiel:

char c = .... 
if ((c & 0xFF) == 0xFF) ... // test char c for zeroes 

Sie möchten können Verschiebungen und Makros verwenden, um es zu automatisieren, anstatt numerische Konstanten zu verwenden, da für verschiedene Arten Sie unterschiedliche Werte benötigen, die MSB zu testen. Sie können den Wert für Schichten mit sizeof erhalten.

// test MSB of an int for zeroes 
int i = ... 
if ((i & (0xFF << 8*(sizeof(int)-1))) == (0xFF<<8*(sizeof(int)-1))) ... 
+0

wenn sizeof (int) == 4 wie ist 0XFF << 3 testen für MSB? – keety

+0

@keety ja, guter Fang – littleadv

0

Drucken Sie die Speicher-Byte für Byte, das heißt 0-sizeof(x) (wenn x geschieht Ihre Variable zu sein). Wenn dann jedes Byte gedruckt wird, werden alle acht Bits einzeln gedruckt.

0
if(x & 0x80) // assuming x is a byte(char type) 
{ 
    // msb is set 
} 
1

Sie folgenden Test verwenden können

var & (1 < < N)

Um zu überprüfen, ob das Bit N in var gesetzt. Das höchstwertige Bit hängt vom Datentyp von var ab.

Verwandte Themen