kaiu
Высший разум
(118837)
9 лет назад
Лучше бы еще поняли, что здесь значит bitset<8>
Иногда эти 2 значения хранять допусть есть или нет, включено или выключено.
Так этим битсетом можно задать и не 8, а определенное кол. и хранить.
Хотя для компактного хранения таких состояний достаточно было и char использовать
Тогда
char a = 0; // все биты сброшены
a += 1; //установит 1 бит
a -= 1; // сбросит
Но если установлены и другие биты, то придется битовой операцией устанавливать и сбрасывать
a = a | 0x1;
a = a & 0xFE;
Капитан Гугл
Искусственный Интеллект
(146235)
9 лет назад
Потому что логические операции - это логические, а битовые - это битовые. Вообще все операции можно заменить побитовым И и сдвигом, но ведь неудобно, правда?
Простой пример: есть локальная сеть с адресами 192.168.0.0-192.168.0.63 (все числа - по одному байту, т. е. 1 адрес записывается 4 байтами). По-другому это обозначается как сеть 192.168.0.0 с маской 255.255.255.192. Что значит "с маской"? Это значит, что если применить маску с побитовым И к произвольному адресу, то для адресов этой подсети останется 192.168.0.0, а для остальных - что-то другое. Попробуйте такую операцию с логическими операторами проделать.