2014-11-17 1 views
5

Ho bisogno di implementare un array di bit efficiente in C. Da quello che ho visto C non supporta questo in modo da poter usare una matrice di numeri interi (secondo un sito che ho visto) e quindi utilizzare uno spostamento per accedere a singoli bit. Dichiarerebbe semplicemente che un array bool è la stessa cosa o è meno efficiente in termini di memoria?bool array vs bit array in C

+1

Un '_bool' in C è generalmente un' int' internamente. Un '_bool []' usa circa 32 volte (dare o prendere) tanta memoria quanto l'array di interi con accesso bit-shifted. – EOF

+1

Se l'utilizzo di C++ è un'opzione valida per voi, std :: vector offre l'ottimizzazione dello spazio di riempimento dei bit che state descrivendo. –

+2

@EOF: '_Bool' (non' _bool') è in genere 1 byte, non ha la stessa dimensione di 'int'. –

risposta

3

Sì, un semplice array _Bool richiede più spazio di archiviazione di un array di numeri interi combinato con alcuni bit shift. L'array _Bool memorizza un bit di dati in uno spazio sizeof(_Bool) (normalmente un singolo byte). L'array intero può memorizzare molti più bit per byte (minimo 8).