У меня есть набор из 22 5-битных значений (0-31), которые упакованы вместе как 110 бит в два 64-битных целых числа без знака (т.е. последние 18 бит всегда равны нулю). Я хочу разработать функцию, которая для каждого сегмента из 5 бит будет выполнять разность абсолютных значений.
Мне известны методы вычитания с использованием побитовых операторов для одного числа, но здесь я не хочу беспокоиться о переполнении между 5-битными сегментами. Я ищу решение, использующее побитовые операторы и / или операции сборки x86, желательно без каких-либо циклов.
РЕДАКТИРОВАТЬ: Чтобы уточнить, у меня будут пары из этих 110 бит, над которыми я хочу выполнить эту операцию разницы. Любые предложения приветствуются.
РЕШЕНИЕ: Спасибо @EOF за предложение инструкции VPSADBW. Вместо этого я собираюсь использовать 8-битные числа в пользу более быстрого (и более читаемого) кода.