Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как сдвинуть указатель на несколько бит?

8.5K
16 октября 2006 года
voinDi
44 / / 28.09.2006
У меня есть массив типа unsigned long int DI[100]; есть указатель типа unsigned char*ptr; указатель указывает на начало массива DI. можно ли сдвинуть указатель на несколько битов вперед относительно начала массива DI? Как сделать эту операцию:confused: ?
240
16 октября 2006 года
aks
2.5K / / 14.07.2006
Во первых кривое какое то приведение указателей. Зачем указателю на unsigned char, присваивать указатель на unsigned long int?
Понятно, что указатели можно привести к чему угодно, но даже void * было бы корректней.
По поводу сдвига относительномассива. Минимум, что можно адресовать - байт. Указывать на отдельные биты байта указатель не может. Можно сдавинуть указатель на сколько то байтов, а потом вычленять из них отдельные биты.
8.5K
16 октября 2006 года
voinDi
44 / / 28.09.2006
указатель нужен такой, чтоб после нахождения нужного бита шагать по байтно. А как вычленять отдельные биты? Присвоить значение какой-нибудь переменной, а потом делать операцию сдвига?
240
16 октября 2006 года
aks
2.5K / / 14.07.2006
Цитата:

указатель нужен такой, чтоб после нахождения нужного бита шагать по байтно.


Так не получится. Биты нельзя адрессовать. Это даже не столько языка ограничение, а железа.
А вычленять да, можно присваивая и сдвигая. Можно используя бинарное и (&)
Тоесть например чтобы найти значение определенного бита какого то байта нужно применить & с байтом в котором все нули и только на нужном месте 1.

8.5K
16 октября 2006 года
voinDi
44 / / 28.09.2006
Я знаю, что можно к переменной применить операцию сдвига, а можно к массиву применить эту операцию, чтоб все элементы массива сдвинулись, т.е применить к одному, а все остальные сдвинулись автоматичестки?
240
16 октября 2006 года
aks
2.5K / / 14.07.2006
Если только не обычный массив как указатель, а исспользовать какой то классовый контейнер, реализующий функциональность массива. И ему уже перегрузить такой оператор. А для обыного массива корректно такое не обработать.
8.5K
16 октября 2006 года
voinDi
44 / / 28.09.2006
Спасибо, попробую
63
04 ноября 2006 года
Zorkus
2.6K / / 04.11.2006
STL , Vector<bool>, (оптимизированная версия вектора для побитового лэйаута)вот он позволяет работать с битами.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог