Pole bitowe
Ostatnio zmodyfikowano 2013-01-21 12:27
starter Temat założony przez niniejszego użytkownika |
Pole bitowe » 2013-01-21 08:18:09 Witam, znalazłem w internecie artykuł o polu bitowym w C++. Bardzo przydałaby mi się ta funkcja, gdyż potrzebuje zmiennej o rozmiarze 1 bita, a chyba nie ma takiej wbudowanej w język? A więc pole bitowe miało by wyglądać tak unsigned short zmienna: 3; . Taki zapis powodował by, że zmienna mogłaby przechowywać tylko 3 bity. Niestety kompilacja się nie powodzi. Używam CodeBlocks 10.05. Dzięki za pomoc :) |
|
jsc |
» 2013-01-21 08:35:05 To ma większość shorta, z czego wykorzystujesz tylko 3 bity, po za tym zapomniałeś ;. |
|
starter Temat założony przez niniejszego użytkownika |
» 2013-01-21 08:38:25 już poprawione i tak nie działa //edit: wyskakuje error:expected initializer before ':' token //down: W logu jest tylko to co podałem dwa wiersze wyżej |
|
m4tx |
» 2013-01-21 08:39:51 @starter to, co robisz, nie ma sensu. Twoja zmienna i tak będzie zajmować minimum 1 bajt w pamięci. Jak chcesz mieć zmienną o rozmiarze 1 bita to możesz np. umieścić sobie 8 booli w jednym bajcie (niestety jednak, na chwilę obecną nie pamiętam już, jak to się robi). I tak btw., zamiast mówić "kompilacja się nie powodzi" podaj log kompilacji :) |
|
krzyk |
» 2013-01-21 08:49:20 dajesz to w class lub struct,bo chyba tylko tam można takiej konstrukcji użyć. |
|
kubawal |
» 2013-01-21 11:01:24 Robi sie to tak (przykładowo): struct PrinterState { unsigned int IsPaper: 1; unsigned int IsColor: 1; unsigned int IsBlack: 1; unsigned int IsBusy: 1; unsigned int IsBroken: 1; unsigned int CanPrint: 1; unsigned int: 26; };
PrinterState ps = GetPrinterState( device ); if( ps.IsBroken == true ) { cout << "Drukarka się zepsuła!"; }
|
|
pekfos |
» 2013-01-21 12:18:52 starter: Czyżbyś nie miał podstawowej wiedzy w zakresie informatyki? Najmniejszą adresowalną jednostką pamięci jest bajt, więc istnienie 3-bitowego typu jest po prostu niemożliwe. Pola bitowe służą do efektywnego pakowania składowych w złożonych typach. Dzięki temu można zmniejszyć rozmiar struktury kosztem szybkości dostępu do składowych. |
|
DejaVu |
» 2013-01-21 12:27:15 kosztem szybkości dostępu do składowych
|
Tej szybkości bym tak nie podkreślał bo poświęcenie jednego lub dwóch cykli na wyłuskanie jednej informacji może być szybsze aniżeli kilkukrotny odczyt danych z 'różnych' adresów pamięci. |
|
« 1 » |