Битовые операции: различия между версиями

Материал из Algocode wiki
Перейти к: навигация, поиск
 
(не показано 5 промежуточных версий этого же участника)
Строка 2: Строка 2:
  
 
<syntaxhighlight lang=C++ line=True>
 
<syntaxhighlight lang=C++ line=True>
(num >> i) \& 1
+
if ((num >> i) & 1) {
 +
    cout << "YES";
 +
}
 +
else {
 +
    cout << "NO";
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
вернет 1 тогда и только тогда, когда $i$-й элемент в множестве $num$, так как $(num >> i)$ вернет нам число $num$ со сдвигом на $i$ и следовательно 1 символ будет равен 1, если элемент в множестве.
+
 
 +
вернет 1 тогда и только тогда, когда $i$-й элемент в множестве $num$, так как $(num >> i)$ вернет нам число $num$ со сдвигом на $i$ и следовательно 1 символ будет равен 1, если элемент в множестве.
  
 
===Добавить $i$-й элемент в множество $num$===
 
===Добавить $i$-й элемент в множество $num$===
  
 
<syntaxhighlight lang=C++ line=True>
 
<syntaxhighlight lang=C++ line=True>
 +
 
num |= (1 << i)
 
num |= (1 << i)
 +
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Строка 15: Строка 23:
  
 
<syntaxhighlight lang=C++ line=True>
 
<syntaxhighlight lang=C++ line=True>
num \^= (1 << i)
+
num ^= (1 << i)
 
</syntaxhighlight>  
 
</syntaxhighlight>  
  
Строка 21: Строка 29:
  
 
<syntaxhighlight lang=C++ line=True>
 
<syntaxhighlight lang=C++ line=True>
num \&= ~(1 << i)
+
num &= ~(1 << i)
 
</syntaxhighlight>  
 
</syntaxhighlight>  
  
 
{{Автор|Лобанов Глеб|glebodin}}
 
{{Автор|Лобанов Глеб|glebodin}}

Текущая версия на 09:33, 13 декабря 2019

Проверка, что $i$-й элемент в множестве $num$

1 if ((num >> i) & 1) {
2     cout << "YES";
3 }
4 else {
5     cout << "NO";
6 }

вернет 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