Как сдвинуть указатель на несколько бит?
У меня есть массив типа unsigned long int DI[100]; есть указатель типа unsigned char*ptr; указатель указывает на начало массива DI. можно ли сдвинуть указатель на несколько битов вперед относительно начала массива DI? Как сделать эту операцию:confused: ?
Понятно, что указатели можно привести к чему угодно, но даже void * было бы корректней.
По поводу сдвига относительномассива. Минимум, что можно адресовать - байт. Указывать на отдельные биты байта указатель не может. Можно сдавинуть указатель на сколько то байтов, а потом вычленять из них отдельные биты.
указатель нужен такой, чтоб после нахождения нужного бита шагать по байтно. А как вычленять отдельные биты? Присвоить значение какой-нибудь переменной, а потом делать операцию сдвига?
Цитата:
указатель нужен такой, чтоб после нахождения нужного бита шагать по байтно.
Так не получится. Биты нельзя адрессовать. Это даже не столько языка ограничение, а железа.
А вычленять да, можно присваивая и сдвигая. Можно используя бинарное и (&)
Тоесть например чтобы найти значение определенного бита какого то байта нужно применить & с байтом в котором все нули и только на нужном месте 1.
Я знаю, что можно к переменной применить операцию сдвига, а можно к массиву применить эту операцию, чтоб все элементы массива сдвинулись, т.е применить к одному, а все остальные сдвинулись автоматичестки?
Если только не обычный массив как указатель, а исспользовать какой то классовый контейнер, реализующий функциональность массива. И ему уже перегрузить такой оператор. А для обыного массива корректно такое не обработать.
Спасибо, попробую
STL , Vector<bool>, (оптимизированная версия вектора для побитового лэйаута)вот он позволяет работать с битами.