Перепишите операторы разделив на категории:
Арифметические операторы Операторы отношения логические операторы Определите результат оператора ?
х = 10; у = х > 9 ? 100 : 200;
Теперь приведем примеры последовательностей символов, которые не могут использоваться как идентификаторы:
012
a fool
$sys
Class
3var
pay.due
foo~bar
.name if
Приведите свои примеры допустимых и не допустимых имен
ПОРАЗРЯДНЫЕ ОПЕРАЦИИ
Если число беззнаковое (unsigned), то все биты участвуют в формировании значения, но число может быть только положительным.
Информация в компьютере представляется в двоичной системе (наличие и отсутствие напряжения). Минимальной единицей информации является бит – ноль или единица, ложь или истина, «нет» или «да». Каждый байт состоит из 8 бит.
Если число знаковое (signed), то самый левый его бит обозначает знак числа – 0 для положительных чисел и 1 для отрицательных чисел, остальные биты формируют модуль числа (это относится только к целым числам, вещественные числа всегда со знаком).
нормальный код числа (дополнительный код числа)
Положительные целые числа в компьютере представляются в нормальном коде – это обычное представление числа в двоичной системе, а отрицательные – в дополнительном коде.
Для получения дополнительного кода берется двоичное представление равного по модулю целого числа, затем все цифры двоичного представления инвертируются (0 переходит в 1, 1 – в 0), при этом получается так называемый обратный код, к которому прибавляется 1 для получения дополнительного кода.
пример
Например, нормальный код числа 207 при использовании 2 байт – 0000000011001111,
а дополнительный код числа -207 – 1111111100110001 (количество цифр в числе существенно!).
Если сложить два эти числа, получается 0 (с переносом 1 за старший разряд числа). При сложении различных по модулю положительного и отрицательного чисел получается число в нормальном коде, если результат больше 0, и число в дополнительном коде, если результат меньше 0.
ПОРАЗРЯДНЫЕ ОПЕРАЦИИ
Поразрядные операции также проводятся только над соответствующими разрядами целочисленных операндов:
|: поразрядная дизъюнкция (операция ИЛИ или поразрядное сложение). Возвращает 1, если хотя бы один из соответствующих разрядов обоих чисел равен 1
^: поразрядное исключающее ИЛИ. Возвращает 1, если только один из соответствующих разрядов обоих чисел равен 1
~: поразрядное отрицание или инверсия. Инвертирует все разряды операнда. Если разряд равен 1, то он становится равен 0, а если он равен 0, то он получает значение 1.
Побитовый сдвиг влево (<<) и побитовый сдвиг вправо (>>)
В C++ количество используемых бит основывается на размере типа данных (в 1 байте находятся 8 бит).
Оператор побитового сдвига влево (<<) сдвигает биты влево. Левый операнд является выражением, в котором они сдвигаются, а правый — на сколько мест нужно сдвинуть.
Поэтому в выражении 3 << 1 мы имеем в виду «сдвинуть биты влево в литерале 3 на одно место».
Примеры
В третьем случае, один бит перемещается за пределы самого литерала! Биты, сдвинутые за пределы двоичного числа, теряются навсегда.
unsigned int x = 4; x = x << 1; // x должен быть 8 Чаще всего поразрядные логические операции используются для работы с небольшим по величине множеством данных (массивом разрядов). В этом случае каждый разряд беззнакового целого представляет один элемент множества, и число элементов определяется количеством разрядов. Бинарная операция & интерпретируется как пересечение множеств, операция | как объединение, а операция ^ как разность множеств.
Зачем нужны побитовые операторы
Для экономии использования памяти
Для приобретения дополнительной скорости в научных программах, в играх, в встроенных программах
Проверить примеры
5 | 6
3 & 7
6 ^ 3
1. Какой результат 0110 >> 2 в двоичной системе?
~7