2013-03-18 3 views
0

Как перебирать уникальные (...000010000...) бинарные маски long long? я имел в виду над масками, как 0001, 0010, 0100, 1000Как перебирать бинарные маски длинного длинного?

+0

Что значит итерации бинарной маски? – Pubby

+0

Просто выполните цикл 'for' над всеми возможными значениями' long long' и используйте их как маску, может быть? – iamnotmaynard

ответ

4

Если вы имеете в виду каждую маски с одним битом:

for (unsigned long long mask = 1; mask != 0; mask <<= 1) { 
    // Do something with mask 
} 

Обратите внимание, что вы должны использовать unsigned для того, чтобы определило поведение, когда сдвиг переполнение.

Я предполагаю, что вы не имеете в виду все возможные значения маски; для их повторения потребуется очень много времени.

Смежные вопросы