Битовые операции: различия между версиями
Материал из Algocode wiki
Глеб (обсуждение | вклад) |
Глеб (обсуждение | вклад) |
||
Строка 2: | Строка 2: | ||
<syntaxhighlight lang=C++ line=True> | <syntaxhighlight lang=C++ line=True> | ||
− | (num >> i) | + | (num >> i) & 1 |
</syntaxhighlight> | </syntaxhighlight> | ||
вернет 1 тогда и только тогда, когда $i$-й элемент в множестве $num$, так как $(num >> i)$ вернет нам число $num$ со сдвигом на $i$ и следовательно 1 символ будет равен 1, если элемент в множестве. | вернет 1 тогда и только тогда, когда $i$-й элемент в множестве $num$, так как $(num >> i)$ вернет нам число $num$ со сдвигом на $i$ и следовательно 1 символ будет равен 1, если элемент в множестве. | ||
Строка 15: | Строка 15: | ||
<syntaxhighlight lang=C++ line=True> | <syntaxhighlight lang=C++ line=True> | ||
− | num | + | num ^= (1 << i) |
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 21: | Строка 21: | ||
<syntaxhighlight lang=C++ line=True> | <syntaxhighlight lang=C++ line=True> | ||
− | num | + | num &= ~(1 << i) |
</syntaxhighlight> | </syntaxhighlight> | ||
{{Автор|Лобанов Глеб|glebodin}} | {{Автор|Лобанов Глеб|glebodin}} |
Версия 09:32, 13 декабря 2019
Содержание
Проверка, что $i$-й элемент в множестве $num$
1 (num >> i) & 1
вернет 1 тогда и только тогда, когда $i$-й элемент в множестве $num$, так как $(num >> i)$ вернет нам число $num$ со сдвигом на $i$ и следовательно 1 символ будет равен 1, если элемент в множестве.
Добавить $i$-й элемент в множество $num$
1 num |= (1 << i)
Удалить $i$-й элемент из множества $num$, если он есть
1 num ^= (1 << i)
Удалить $i$-й элемент из множества $num$
1 num &= ~(1 << i)
Автор конспекта: Лобанов Глеб
По всем вопросам пишите в telegram @glebodin