Нужен способ выбрать общий бит в двух битовых масках наугад

Вообразите две битовых маски, я буду просто использовать 8 битов для простоты:

01101010
10111011

2-е, 4-е, и 6-е биты оба 1. Я хочу выбрать одного из распространенных "на" битах наугад. Но я хочу сделать это в O (1).

Единственным путем я нашел, чтобы сделать, это до сих пор - выбор случайное "на" бите в одном, затем проверьте другой, чтобы видеть, включено ли это также, затем повторитесь, пока я не нахожу соответствие. Это все еще O (n), и в моем случае большинство битов выключено в обеих масках. Я делаю, конечно, и их вместе, чтобы первоначально проверить, существуют ли какие-либо общие биты вообще.

Существует ли способ сделать это? Если так, я могу увеличить скорость своей функции приблизительно на 6%. Я использую C#, если это имеет значение.Спасибо!

Mike

6
задан Mike Christensen 11 August 2010 в 00:56
поделиться