ПрограммированиеФорумОбщее

функции для работы с битами

Страницы: 1 2 3 4 Следующая »
#0
15:08, 13 июля 2009

Хочу сделать нестабильные переменные то есть байт не будет равен 8 битам, а хранить их в обычных байтах.
То есть мой байт будет равен скажем 12 битам, теперь шаманю функции для чтения/записи, но чето туплю сегодня.
Подскажите пожалуйста...

#1
15:16, 13 июля 2009

OberMeister
> нестабильные переменные то есть байт не будет равен 8 битам
LolWut ?

#2
15:41, 13 июля 2009

Прототипы функций?

#3
15:49, 13 июля 2009

OberMeister
На самом деле это очень интересная и непростая задача, которую можно по разному решить. Я предлагаю использовать паттерн проектирования "Приспособленец", оперирующий 12-битовыми байтами.
К сожалению не указан язык реализации, но если ваш язык поддерживает обобщенное метопрограмирование, то вы можете задавать количество желаемых битов в байте как параметр шаблона.
Так же используя динамический полиморфизм можно сделать, так что бы количество битов в байте опредилялось во время выполнения.
Если же вы используете хаскель, то вместо конкретных битов можно использовать лямбда-абстракцию.
Nikopol
Неконструктивный тон вашего комментария неуместен в серьёзном треде.

#4
16:15, 13 июля 2009

pink_master
это сейчас ты о чем? можно пару примеров в игроделании
> динамический полиморфизм
> использовать лямбда-абстракцию.
Не жирно?

#5
16:23, 13 июля 2009

С++
Если попроще, то vector<bool> вместо массива байтовых bool создаёт битовый массив.
Тебе остаётся написать класс-адаптер который пересчитает биты из вектора в твои слова переменной битовой длины. Возможно будет неоптимально зато коротко и понятно.

Если хочется оптимально и быстро - тут всё зависит от предполагаемой длины, как будет соотноситься твоя длина слова  с длиной машинного слова (8 или 32 бит), тогда пишется простой код из сдвигов и вырезаний с помощью битовой маски. Причём код получится разный для разной длины слова (меньше машинного, больше вдвое, больше втрое итд). Чем больше длина слова - тем больше придётся добавить таких расчётов и операций.

#6
16:24, 13 июля 2009

pink_master
Жену свою поучи щи варить.

#7
16:30, 13 июля 2009

kvakvs
> vector<bool> вместо массива байтовых bool создаёт битовый массив.
серьезно?

хм... значит врет все МСДН.....

reference operator[](
   size_type _Pos
);
const_reference operator[](
   size_type _Pos
) const;
#8
16:31, 13 июля 2009

pink_master
Nikopol

девочки, не ссорьтесь! (С)

#9
16:32, 13 июля 2009

Kloun
а теперь посмотри специализацию vector<bool>

#10
16:41, 13 июля 2009

Nikopol
хорошо

#11
16:43, 13 июля 2009

BLo
ооо))) нашел )))

а чет МСДН говорит что у него всего два мембер-функции
flip
swap

опять врет сцуко =((((

#12
16:54, 13 июля 2009

OberMeister
Скажи зачем тебе? Когда речь заходит о битах то я всегда начинаю задумываться про оптимизацию, скорость и размер. Если твоя задача просто поиграться, то не морочь народу голову...

#13
17:38, 13 июля 2009

> Хочу сделать нестабильные переменные то есть байт не будет равен 8 битам, а
> хранить их в обычных байтах.
> То есть мой байт будет равен скажем 12 битам, теперь шаманю функции для
> чтения/записи, но чето туплю сегодня.
где тут вопрос, в чем проблема, что нужно то? вроде по русски написано, а ниче не понятно

Kloun
в том то и дело, что vector<bool> вообще не является STL контейнером

#14
17:43, 13 июля 2009

Breezy
>Скажи зачем тебе?
Есть идея сделать хороший формат рисунка (выгода в качестве и размере) (c) МОЁ :-D

gexogen
Суть в том что записать в файл можно только байт (8 бит), вот потому и приходится извращатся чтоб записать 12 битный байт.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.