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

Лучше бы еще поняли, что здесь значит bitset<8>
Иногда эти 2 значения хранять допусть есть или нет, включено или выключено.
Так этим битсетом можно задать и не 8, а определенное кол. и хранить.
Хотя для компактного хранения таких состояний достаточно было и char использовать
Тогда
char a = 0; // все биты сброшены
a += 1; //установит 1 бит
a -= 1; // сбросит
Но если установлены и другие биты, то придется битовой операцией устанавливать и сбрасывать
a = a | 0x1;
a = a & 0xFE;
Иногда эти 2 значения хранять допусть есть или нет, включено или выключено.
Так этим битсетом можно задать и не 8, а определенное кол. и хранить.
Хотя для компактного хранения таких состояний достаточно было и char использовать
Тогда
char a = 0; // все биты сброшены
a += 1; //установит 1 бит
a -= 1; // сбросит
Но если установлены и другие биты, то придется битовой операцией устанавливать и сбрасывать
a = a | 0x1;
a = a & 0xFE;
Побитовые работают с каждым битом числа по-отдельности, а для логических - всё число целиком либо равно нулю (ложь), либо не равно (истина).
Потому что логические операции - это логические, а битовые - это битовые. Вообще все операции можно заменить побитовым И и сдвигом, но ведь неудобно, правда?
Простой пример: есть локальная сеть с адресами 192.168.0.0-192.168.0.63 (все числа - по одному байту, т. е. 1 адрес записывается 4 байтами). По-другому это обозначается как сеть 192.168.0.0 с маской 255.255.255.192. Что значит "с маской"? Это значит, что если применить маску с побитовым И к произвольному адресу, то для адресов этой подсети останется 192.168.0.0, а для остальных - что-то другое. Попробуйте такую операцию с логическими операторами проделать.
Простой пример: есть локальная сеть с адресами 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 бит).
Похожие вопросы
- арифметические и побитовые операции,
- Побитовые операции, условие внутри
- Побитовые операции - самые "легкие" для компьютера?
- Логические операторы в Python 3 - объясните на пальцах?
- Помогите пожалуйста. Нужен в программе цикл или можно обойтись оператором if? (прога внутри)
- Прогреи помагите с++. Для чего нужны Битовые операции. Заранее спасибо.
- Информатика."Найти значение логических выражений".Очень нужна ваша помощь!
- паскаль, как работать с оператором goto, как ставить метки, чтобы при операции goto 1,
- Оператор return в c#.Зачем он нужен?
- Кто знает, по какому принципу осуществляются логические операции над числами?