Pointerzugriff auf Integerbits



  • Hab mal wieder ein Problem mit den Pointern...

    Nehmen wir an, ich möchte einen Pointer auf ein bestimmtes Bit eines Integers (zum Beispiel um ihn binär wiederzugeben).

    Wo liegt mein Denkfehler, wenn ich so auf die einzelnen Bits zugreifen will?

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdint.h>
    
    int main(int argc, char* argv[]){
    	int16_t myInt= 0x1291;
    	char *array = (char*)&myInt;
    
    	int i;
    	char *c;
    
    	c = array;
    	for(i = 0; i < 16; i++)
    		printf("%d", *c++ & 0x1);
    	printf("\n");
    
    	return 0;
    }
    

    Ich kriege als Ausgabe 1000000000000010
    was offensichtlich falsch ist. (0x1291 = 0001001010010001)

    Bemerkung:
    Ich möchte auf die Bits zugreifen, nicht ihren Wert auslesen.

    for(i = 15; 1 >= 0; i--)
        printf("%d", (myInt >> i) & 0x1);
    

    liefert mir zwar die korrekte binäre Darstellung von myInt ist aber ausdrücklich nicht, was ich versuche.



  • Du kannst mit Pointern nicht direkt auf einzelne Bits zugreifen.
    Jedenfalls nicht, so wie du dir das vorstellst.

    Ein char hat mindestens 8 Bit



  • ich möchte einen Pointer auf ein bestimmtes Bit eines Integers

    Die kleinste adressierbare Einheit ist Byte nicht Bit.



  • Ups, das erklärt so einiges.
    Danke euch.


Anmelden zum Antworten