Нефига не понимаю в типах и битовых операциях =)

lalapta100
Offline
Зарегистрирован: 01.01.2014

В примерах видел как переменные Bool хранили в таком виде


byte xz[3] = {
   B01011010,
   B01111110,
   B00001010
};

for (int i =0; i <8; i++)  
{
    bool b = ((xz[i] >>i )  & 0x01)

}

тут в 1 переменную byte помещается 8 значений bool

мне нужно сделать тоже самое только для хранения  20 бит.  Причем обязательно в одной переменой чтобы можно было бы их там двигать, и  считывать по фрагментам.

Походу придется использовать long , но он слишком длинный. аж целых 32 бита.

может есть какой способ создать пользовательский тип скажем хотябы на 24 байта или еще какойнибуть способ сыкономить место?

 

 

 

xaker1
Offline
Зарегистрирован: 24.01.2014

Пользовательскую - никак . Только стандартные.

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Ваш xz и есть 3 байта или 24 бита. Только скетч кривой.
Что за задача, что нужно экономить 1 байт на данных

xaker1
Offline
Зарегистрирован: 24.01.2014

Все таки одна массив != одна переменная.

А вообще да - 1 байт врятли спасёт, не стоит заморачиваться с ним.

ites
Offline
Зарегистрирован: 26.12.2013

А что, ещё никто не написал класса, работающего с битовым вектором?

Какие то монстроузные имплементации гуглятся на раз. Упражнение в общем-то для студента, изучающего С++.