TransWikia.com

с++: проверка вхождения битовой последовательности в соответствующую маску с использованием bit manipulation instructions set

Stack Overflow на русском Asked on February 4, 2021

есть некоторая битовая последовательность, записанная в числе

data = 0b01101000

надо определить, что она полностью покрывается битовой последовательностью (маской), записанной в другом числе

mask = 0b01101011

для этого можно использовать два идентичных алгоритма:

mask | data == mask

и

~mask & data == 0

Подскажите, а есть ли какая-нибудь инструкция (или совокупность инструкций) процессоров x86, x64, которая делает тоже самое (смотрю инструкции операций с битами, но не совсем въезжаю)

Оптимально конечно было бы, если бы существовала некоторая функция/инструкция, которая выдавала бы 1, если последовательность полностью покрывается маской и 0 в противном случае

вроде как есть инструкция ANDN (~x & y), но в той же visual studio она доступна только для mmx регистров (_m_pandn), что несколько избыточно и опять же все равно результат надо будет сравнивать

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP