| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > двоичная логика. исключить X из Y. |
| Автор: boostcoder 26.12.2011, 20:47 | ||
| всем привет. наверное не для кого не секрет, что у меня сложности с двоичными операциями. посему, решил поинтересоваться у более опытных. имеется такой код:
http://liveworkspace.org/code/c8c0c813081236f15b66bc14a01b8a91 в этом коде мне не нравится то, что в функции test() для обработки аргумента необходимо писать if для всех членов определенного енума. вопроса два: 1. каким образом можно записать это в виде цикла так, чтоб в цикле перебрать и проверить все комбинации? 2. что нужно сделать с аргументом для того чтоб его можно было передать в switch() ? благодарен. |
| Автор: kuzulis 26.12.2011, 21:09 | ||
| А ничего тут и не сделать особо. Текущий вариант самый быстрый и правильный, ИМХО. Всякие циклы и т.п. только загромоздят. Можно на крайняк так:
|
| Автор: feodorv 26.12.2011, 21:31 | ||
Так подойдёт?
|
| Автор: boostcoder 26.12.2011, 22:16 |
| kuzulis, feodorv, неее, рыбятушки. что-то это все не то. у меня было два вопроса. ответ на первый я почти получил. но и он какой-то не логичный, как мне кажется.. вот я упаковываю значения при помощи |(or). в результате, я получаю что-то типа множества. я полагал, что по этому множеству можно как-то проитерироваться. не? Добавлено @ 22:18 feodorv, не могли бы Вы словами рассказать, что тут происходит?: |
| Автор: newbee 26.12.2011, 23:45 | ||||
Если сложно вдуплить битовые сдвиги, можно запихать все возможные маски в массив и пройтись по нему.
Выше я очень бегло посмотрела примеры, как-то сложно...
|
| Автор: mes 27.12.2011, 02:26 | ||
boostcoder, http://cplusplus.com/reference/stl/bitset/test/ или http://cplusplus.com/reference/stl/bitset/operator[]/ в дополение : http://cplusplus.com/reference/stl/bitset/count/ http://cplusplus.com/reference/stl/bitset/any/ http://cplusplus.com/reference/stl/bitset/none/ |
| Автор: boostcoder 27.12.2011, 20:38 |
| mes, не нужен мне битсет. всем спасибо. сейчас попробую все это дело усвоить... |
| Автор: mes 28.12.2011, 01:42 |
может и не нужен, но может служить выходом для тех, кому трудно обращаться с битами.. ваш первый пример : http://liveworkspace.org/code/6d76dce75302d93f1a78172b15ba5b99 |
| Автор: boostcoder 28.12.2011, 02:04 |
ну так я пытаюсь разобраться, а Вы меня обратно, в мое же болото |
| Автор: mes 28.12.2011, 02:59 | ||
ну разбирайтесь, однако с битсетом иногда надежнее ) |