Язык С++ включает две операции поразрядного сдвига.
<< - сдвиг влево операнда слева от знака операции на число двоичных разрядов справа от знака операции.
>> - сдвиг вправо операнда слева от знака операции на число двоичных разрядов справа от знака операции.
Выдвигаемые биты теряются, а «вдвигаются» нулевые биты.
Сдвиг операндов влево на 1,2,3 и более разрядов – наиболее быстрый способ умножения на 2, 4, 8 и т.д.. Сдвиг операндов вправо на 1,2,3 и более разрядов – наиболее быстрый способ деления на 2,4,8 и т.д.
Например:
y=x>>1; //Деление на 2. Здесь y=6
y=x<<1; //Умножение на 2. Здесь y=24
Логические операции и операции отношения используются при формировании логических выражений, имеющих только два значения: 1, если логическое выражение ИСТИННО; и 0, если логическое выражение ЛОЖНО. Логические выражения наиболее часто используются вместе с операторами циклов и ветвлений.
С++ поддерживает следующие операции отношения:
> больше
Даёт результат 1, если операнд слева от знака больше операнда справа; в противном случае дает результат 0.
< меньше
Даёт результат 1, если операнд слева меньше операнда справа; в противном случае дает результат 0.
= = равно
Даёт результат 1, если операнд слева от знака равен операнду справа; в противном случае дает результат 0.
>= больше или равно
Даёт результат 1, если операнд слева от знака больше или равен операнду справа; в противном случае дает результат 0.
• <= меньше или равно
Даёт результат 1, если операнд слева меньше или равен операнду справа; в противном случае дает результат 0.
• ! = не равно
Даёт результат 1, если операнд слева от знака не равен операнду справа; в противном случае дает результат 0.
С++ поддерживает следующие логические операции:
&& логическое И
Даёт результат 1 (ИСТИНА), если операнд слева от знака и операнд справа имеют значение 1 (ИСТИНА); в противном случае дает результат 0 (ЛОЖЬ).
| | логическое ИЛИ
Даёт результат 1 (ИСТИНА), если операнд слева от знака или операнд справа имеет значение 1 (ИСТИНА); в противном случае дает результат 0 (ЛОЖЬ).
! логическое НЕ
Даёт результат 1 (ИСТИНА), если операнд справа от знака имеет значение 0 (ЛОЖЬ); в противном случае дает результат 0 (ЛОЖЬ).
В С++ значению ИСТИНА соответствует не только значение 1, но и любое другое ненулевое значение. Поэтому, например: