in C o C++, è evidentemente possibile limitare il numero di bit una variabile ha, quindi, ad esempio:impostazione Bit domanda
unsigned char A:1;
unsigned char B:3;
Sono familiarità ma con come funziona nello specifico, in modo da un certo numero di domande :
Se ho una classe con le seguenti variabili:
unsigned char A:1;
unsigned char B:3;
unsigned char C:1;
unsigned char D:3;
- Qual è la tecnica di cui sopra effettivamente chiamato?
- È sopra la classe quattro byte di dimensione o un byte di dimensione?
- Le variabili sono trattate come 1 (o 3) bit come mostrato, o come per il 'carattere non firmato', trattato come un byte ciascuno?
- C'è qualche modo di combinare i bit con un byte centralizzato? Ad esempio:
.
unsigned char MainByte;
unsigned char A:1; //Can this be made to point at the first bit in MainByte?
unsigned char B:3; //Etc etc
unsigned char C:1;
unsigned char D:3;
- C'è un articolo che tratta questo argomento in modo più approfondito?
- Se 'A: 1' è trattato come un intero byte, qual è il punto/viola di esso?
Sentitevi liberi di menzionare qualsiasi altra considerazione (come restrizioni del compilatore o altre limitazioni).
Grazie.
Il nome che stai cercando è bitfields –
Suppongo che dovrei chiedere: stai usando C o C++? E se C++, stai usando questo in una classe non POD? Ho la sensazione che C++ limiti i bitfield ai tipi di struct POD. –
C++. Sto includendo btoh quindi conosco entrambe le differenze delle specifiche (e anche per ampliare le soluzioni applicabili). E sì, lo sto usando in una classe (anche se è in fase di progettazione al momento), se può essere usato solo come una struttura che posso facilmente cambiare però. È per un programma di caricamento di immagini GIF. – SSight3