2017-01-26 2 views
0

Donc j'essaie d'extraire des bits à partir d'un entier binaire de 32 bits en utilisant le décalage et le masquage, mais je m'écarte un par un.Comment extraire des bits d'un nombre entier en C?

#include <stdio.h> 

int main(){ 

    int number = 87; //0000 000 0000 0000 0000 0000 0101 0111 
    int i; 
    int bit; 
    int g = 0; 

    for(i = 32; i > 0; i--){ 

    if(g%4==0 && g!=0){ 
    printf(" "); 
    } 
    g++; 
    bit = (number >> i) & 1; 
    printf("%d", bit); 
    } 

    printf("\n"); 
return 0; 
} 
+0

Avez-vous essayé pas à pas à travers le code ligne par ligne dans un salaud? –

+0

Rappelez-vous également que les nombres de bits sont basés sur zéro. Le premier bit est le numéro '0', le dernier bit dans un nombre de 32 bits est le numéro' 31'. –

+0

comment faites-vous cela? – christian

Répondre

1

Il est logique manquant dans votre code ..

Utilisez

for(i **= 31**; i **>=** 0; i--) 

au lieu de

for(i **= 32**; i **>** 0; i--) 

Commentaire si cela fonctionne pour vous

+0

ouais, je l'ai trouvé. Merci quand même – christian