Хочу сделать нестабильные переменные то есть байт не будет равен 8 битам, а хранить их в обычных байтах.
То есть мой байт будет равен скажем 12 битам, теперь шаманю функции для чтения/записи, но чето туплю сегодня.
Подскажите пожалуйста...
OberMeister
> нестабильные переменные то есть байт не будет равен 8 битам
LolWut ?
Прототипы функций?
OberMeister
На самом деле это очень интересная и непростая задача, которую можно по разному решить. Я предлагаю использовать паттерн проектирования "Приспособленец", оперирующий 12-битовыми байтами.
К сожалению не указан язык реализации, но если ваш язык поддерживает обобщенное метопрограмирование, то вы можете задавать количество желаемых битов в байте как параметр шаблона.
Так же используя динамический полиморфизм можно сделать, так что бы количество битов в байте опредилялось во время выполнения.
Если же вы используете хаскель, то вместо конкретных битов можно использовать лямбда-абстракцию.
Nikopol
Неконструктивный тон вашего комментария неуместен в серьёзном треде.
pink_master
это сейчас ты о чем? можно пару примеров в игроделании
> динамический полиморфизм
> использовать лямбда-абстракцию.
Не жирно?
С++
Если попроще, то vector<bool> вместо массива байтовых bool создаёт битовый массив.
Тебе остаётся написать класс-адаптер который пересчитает биты из вектора в твои слова переменной битовой длины. Возможно будет неоптимально зато коротко и понятно.
Если хочется оптимально и быстро - тут всё зависит от предполагаемой длины, как будет соотноситься твоя длина слова с длиной машинного слова (8 или 32 бит), тогда пишется простой код из сдвигов и вырезаний с помощью битовой маски. Причём код получится разный для разной длины слова (меньше машинного, больше вдвое, больше втрое итд). Чем больше длина слова - тем больше придётся добавить таких расчётов и операций.
pink_master
Жену свою поучи щи варить.
kvakvs
> vector<bool> вместо массива байтовых bool создаёт битовый массив.
серьезно?
хм... значит врет все МСДН.....
reference operator[]( size_type _Pos ); const_reference operator[]( size_type _Pos ) const;
pink_master
Nikopol
девочки, не ссорьтесь! (С)
Kloun
а теперь посмотри специализацию vector<bool>
Nikopol
хорошо
BLo
ооо))) нашел )))
а чет МСДН говорит что у него всего два мембер-функции
flip
swap
опять врет сцуко =((((
OberMeister
Скажи зачем тебе? Когда речь заходит о битах то я всегда начинаю задумываться про оптимизацию, скорость и размер. Если твоя задача просто поиграться, то не морочь народу голову...
> Хочу сделать нестабильные переменные то есть байт не будет равен 8 битам, а
> хранить их в обычных байтах.
> То есть мой байт будет равен скажем 12 битам, теперь шаманю функции для
> чтения/записи, но чето туплю сегодня.
где тут вопрос, в чем проблема, что нужно то? вроде по русски написано, а ниче не понятно
Kloun
в том то и дело, что vector<bool> вообще не является STL контейнером
Breezy
>Скажи зачем тебе?
Есть идея сделать хороший формат рисунка (выгода в качестве и размере) (c) МОЁ
gexogen
Суть в том что записать в файл можно только байт (8 бит), вот потому и приходится извращатся чтоб записать 12 битный байт.
Тема в архиве.