![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
smartchecker |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 83 Регистрация: 7.9.2011 Пользователь №: 2853 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Хочется сделать банальный shift влево, а младший бит обнулить.
Что-то с ходу не вижу данную возможность в QBitArray. Как добиться желаемого с минимальными расходами? |
|
|
![]() |
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2944 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
способ один - перебирая с старшего, каждый байт N сдвинуть влево на 1 бит оператором << , дописав затем в младший бит значение старшего бита N-1 байта (ещё не сдвинутого, естественно)
если критична скорость, а буфер достаточно длинный, то можно немного оптимизировать - выделить часть, кратную длине uint64_t и в ней сдвигать по первому методу, только не побайтно, а элементами uint64_t . Оставшийся хвост додвинуть побайтно. Ну и начать в данном случае лучше с начала буфера, кстати Сообщение отредактировал Алексей1153 - 14.10.2013, 17:12 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 29.6.2025, 22:12 |