2013-02-07 3 views
1

J'ai une variable unsigned int x = 0b0011 comment puis-je faire pour tableau entier non signé, comme y[0]=0 ; y[1]=0; y[2]=1; y[3]=1;?nombre entier binaire à nombre entier dans c

+0

Est-ce un int '0b0011'? –

+0

Connaissez-vous toujours le nombre de bits dans la représentation binaire ou est-ce arbitraire? –

+0

Noor: Je peux définir la variable comme 'int' si cela est nécessaire. @Jordan Kaye: J'ai juste besoin de sortir les valeurs binaires d'un GPIO, j'ai besoin de connaître la valeur entière en tant que binaires. Donc je peux dire que ce n'est pas arbitraire – sven

Répondre

4

Opérations de décalage et de bits.

unsigned x = 0b0011; // yap this is a GNU extension, it doesn't always work even with GCC 

const size_t intsize = sizeof(x) * CHAR_BIT; // go go indepency-of-sizeof(int)! 

unsigned bits[intsize]; // that's why we love constexprs 

int i, j; 
for (i = intsize - 1, j = 0; i >= 0; i--, j++) { // and the comma operator too 
    bits[j] = (x >> i) & 0x1; 
}