Comment puis-je imprimer un bit?

Dites-moi comment j’imprime un peu, comme printf("%d",bit); .

    Si bit est juste un int qui contient la valeur que vous voulez dans le bit le moins significatif, alors:

     printf("%d", bit & 0x1); 

    devrait le faire. Le & effectue un AND-binary avec un nombre avec uniquement le premier bit significatif défini, vous supprimez donc tous les autres bits de l’entier.

    Si vous avez besoin de généraliser plus que Herms, vous pouvez le faire:

     #define IsBitSet(val, bit) ((val) & (1 << (bit))) /* ... your code ... */ printf ("%c", IsBitSet(bit, 0) ? '1' : '0'); 

    Le printf est équivalent à la réponse Herms telle quelle.

    Si vous parlez de bitfield en C, vous pouvez faire ceci:

     struct foo { int b:1; } myFoo; printf("%c", myFoo.b ? '1' : '0'); 

    Question connexe: Comment définir, effacer et basculer un seul bit? est une discussion étendue sur l’access à un seul bit en c et c ++.

    Pour imprimer le m-ème bit (m à partir de 1..16 ou 32) de n:

     void print_bit(n, m) { printf("%d", n & (1 << (m - 1))); } 

    Supprimez le bit - 1 si votre compteur de bits commence à 0.

    La réponse C ++ est plus facile que celle C89, avec le type bool natif:

     bool b = true; std::cout << b; 

    C99 est assez similaire:

     _Bool b = 1; printf("%d", b); 

    Vous pouvez utiliser “union”:

     union bitshow { unsigned bit1:1; int i; }; int main() { union bitshow bit; cin >> bit.i; cout << bit.bit1; return 0; }