Другие языки программирования и технологии

с++ зачем нужны побитовые операции если есть обычные логические операторы?

Лучше бы еще поняли, что здесь значит bitset<8>

Иногда эти 2 значения хранять допусть есть или нет, включено или выключено.
Так этим битсетом можно задать и не 8, а определенное кол. и хранить.
Хотя для компактного хранения таких состояний достаточно было и char использовать
Тогда
char a = 0; // все биты сброшены
a += 1; //установит 1 бит
a -= 1; // сбросит
Но если установлены и другие биты, то придется битовой операцией устанавливать и сбрасывать
a = a | 0x1;
a = a & 0xFE;
Валентин Стрикало
Валентин Стрикало
61 572
Лучший ответ
Побитовые работают с каждым битом числа по-отдельности, а для логических - всё число целиком либо равно нулю (ложь), либо не равно (истина).
Kanat Kurmanov
Kanat Kurmanov
63 761
Потому что логические операции - это логические, а битовые - это битовые. Вообще все операции можно заменить побитовым И и сдвигом, но ведь неудобно, правда?
Простой пример: есть локальная сеть с адресами 192.168.0.0-192.168.0.63 (все числа - по одному байту, т. е. 1 адрес записывается 4 байтами). По-другому это обозначается как сеть 192.168.0.0 с маской 255.255.255.192. Что значит "с маской"? Это значит, что если применить маску с побитовым И к произвольному адресу, то для адресов этой подсети останется 192.168.0.0, а для остальных - что-то другое. Попробуйте такую операцию с логическими операторами проделать.
Логические операторы работают над типом bool. А он - это всего 2 значения (1 бит).