Существует ли умный способ (т.е. безветристый) для "уплотнения" шестнадцатеричного числа. В основном переместите все 0s в одну сторону?
например:
0x10302040 -> 0x13240000
или
0x10302040 -> 0x00001324
Я смотрел бит Twiddling Hacks, но ничего не видел.
Это для алгоритма численного вращения SSE. Мне нужно удалить любые опорные точки, которые становятся 0. Я могу использовать _mm_cmpgt_ps
, чтобы найти хорошие опорные точки, _mm_movemask_ps
, чтобы преобразовать это в маску, а затем взломать хаки, чтобы получить что-то вроде выше. Значение шестнадцатеричного значения переходит в маску для команды _mm_shuffle_ps
для выполнения перестановки в регистре бит SSE 128.