XIX + XXVI = XLV
Последовательность выполнения сложения такова:
а) IX+VI: I после V "уничтожает" I перед X, поэтому в результате получаем XV ;
б) X+XX=XXX, если добавить ещё один X, получим XXXX, или XL.
Сложность вычитания римских чисел приблизительно такая же. Однако чтобы умножить два римских числа, требуется диплом бакалавра математики ( у вас волосы станут дыбом от правила, которое объясняет, как добавить к X разряд справа так, чтобы X*IV равнялось XL ). А уж о делении римских чисел можно писать целые диссертации. Словом, хорошо, что мы пользуемся арабскими числами...
_________________
61 стр. Глава 4. Выполнение логических операций
►Выполнение побитовых логических операций...62
Все числа С++ могут быть представлены в двоичном виде, т.е. с использованием только 0 и 1 в записи числа. В табл. 4.2 указаны операции, которые работают с числами побитово; отсюда и происходит название термина "побитовые операции".
Таблица 4.2. Побитовые операции
_________________
Оператор — Функция
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
~ — Каждый бит меняет своё значение на противоположное: 0 заменяется 1, 1 — нулём
& — Побитовое И: поочередно выполняет операцию И с парами битов левого и правого аргумента
| — Побитовое ИЛИ
^ — Побитовое исключающее ИЛИ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
С помощью побитовых операций можно сохранять большое количество информации в маленьком участке памяти. В мире существует множество вещей, которые имеют только два состояния ( или, максимум, четыре ). Вы или женаты ( замужем ), или нет ( хотя можете быть в разводе или ещё не женаты ). Вы или мужчина, или женщина ( по крайней мере, так сказано в моих водительских правах ). В С++ каждую такую характеристику вы можете сохранить в одном бите. Таким образом, поскольку для хранения целого числа выделяется 4 байта, в тип int можно упаковать значения 32 разных свойств.
Кроме того, побитовые операции выполняются крайне быстро. Хранение 32 характеристик в одном типе не приводит ни к каким дополнительным затратам.
«Хотя память становится всё дешевле, она всё равно не безгранична. Иногда, при работе с большими объёмами данных, такая экономия с использованием битовых представлений весьма существенна.»
[Советы]
Побитовые операции с одним битом...62
Побитовые операторы &, ^, | и ~ выполняют логические операции над отдельными битами числа. Если рассматривать 0 как false и 1 как true ( так принято, хотя можно ввести и другие обозначения ), то для оператора ~ справедливо следующее:
~1( true ) равно 0( false )
~0( false ) равно 1( true )
Оператор & определяется так:
1( true ) & 1 ( true ) равно 1( true )
1( true ) & 0 ( false ) равно 0( false )
0( false ) & 0 ( false ) равно 0( false )
0( false ) & 1 ( true ) равно 0( false )
Для оператора |:
1( true ) | 1 ( true ) равно 1( true )
1( true ) | 0 ( false ) равно 1( true )
0( false ) | 0 ( false ) равно 0( false )
0( false ) | 1 ( true ) равно 1( true )
_________________
62 стр. Часть 1. Первое знакомство с С++
Таблица 4.3. Таблица истинности оператора &
& 1 0
1 1 0
0 0 0
В таблице столбцы соответствуют значению одного аргумента, а строки — второго; результат операции находится на пересечении соответствующих строки и столбца. Так, из таблицы видно, что получить в результате операции & можно только если оба операнда равны 1. Далее в табл. 4.4 приведена таблица истинности оператора | ( ИЛИ ).