Bits Testen

Hallo zusammen.

Ich würde gerne wissen wie man prüfen kann ob einzelne Bits gesetzt sind oder nicht und
wie man z.B. eine Zahl vom Typ int Bitweise auf dem Bildschirm ausgeben kann.

Und nun wozu ich dies überhaupt wissen möchte. Ich übergebe einer Funktion, genauer gesagt der CT_data() Funktion die Bestandteil des Towitoko Kartentreibers ist einen Pointer auf ein Array und diese Funktion setzt nun im ersten Byte dieses Array verschiedene Bits auf Null und andere auf 1. Je nachdem welche Bits gesetzt sind bedeutet dies ob eine Chipkarte vorhanden ist oder nicht etc.


Hoffe mir kann jemand weiter helfen, vielen Dank schon ein mal im Vorraus.
 
Hi,
mit dem bitweisen "Und" kannst du bestimmte Bits testen.

Code:
int i = 10; /* 0000 1010 */
int j = 2; /* 0000 0010 */
if( (i & j) == j ) 
  printf("2. Bit gesetzt.\n");
 
Ok ich glaube das habe ich begriffen.

Ich habe eine Bitfolge und Verknüpfe diese mit einer anderen Bitfolge mit AND
In dem Ergebniss der Verknüpfung sind nur die Bits gesetzt die in beiden Bitfolgen
1 waren. Jetzt bestimme ich den dezimalen Wert diser Verknüpfung und kann dann einfach Prüfen ob alle erforderlichen Bits gesetzt waren.

Hoffe mal habe das so richtig verstanden ;)

In meinem meinem Beispiel mache ich nun folgendes:

Code:
//Feld für Antwort der Funktion(Daten von ICC) 
unsigned char  response[256];  

// Absetzen des REQUEST ICC Befehls über die CT-API
result = CT_data (ctn, &dad, &sad, 5, request_icc, &lenr, response);

Habe das jetzt ein wenig gekürzt und die Deklarationen weggelassen und den restlichen Krimskrams auch.

Das wichtige ist eigentlich folgendes:
Ich übergebe CT_data() als letzes Argument ein Array bzw. eben den die Adresse
des ersten Elements ( da ja response == &response[0] ).

Nun gut, die Funktion setzt nur die ersten 8 Bits in diesem Array auf 0 oder 1.

Wie kann ich jetzt hier eine Prüfung durchführen, wie z.B. vorher mit einer AND Verknüpfung, ich meine ich habe ja nicht mehr zwei int Variablen.
 
Zurück