Ho bisogno di mettere in valigia alcuni bit in un byte in questo modo:Campi bitmap C/C++ rispetto agli operatori bit a bit per individuare i bit, che è più veloce, migliore, più portabile?
struct
{
char bit0: 1;
char bit1: 1;
} a;
if(a.bit1) /* etc */
o:
if(a & 0x2) /* etc */
Dal codice sorgente di chiarezza è abbastanza ovvio per me che sono campi di bit più ordinato. Ma quale opzione è più veloce? So che la differenza di velocità non sarà eccessiva se non nessuna, ma dato che posso usarne qualcuna, se è più veloce, migliore.
D'altra parte, ho letto che i bitfield non sono garantiti per organizzare i bit nello stesso ordine attraverso le piattaforme e voglio che il mio codice sia portatile.
Note: Se si prevede di rispondere a 'Profilo' ok, lo farò, ma poiché sono pigro, se qualcuno ha già la risposta, molto meglio.
Il codice potrebbe essere sbagliato, puoi correggermi se vuoi, ma ricorda qual è il punto di questa domanda e per favore prova a rispondere anche a questo.
Potresti essere interessato a http://stackoverflow.com/questions/1044654/bitfield-manipulation-in-c. C'è almeno un'altra domanda molto simile su cui ricordo di aver commentato (non sembra essere questa). –
Bitfield: sei fuori! Grazie a tutti. – Petruza
Wow. Abbiamo insegnato una lezione preziosa qui. –