Написать программу для вычисления арифметического выражения, содержащего целые числа, скобки и знаки операций +, –, *, / (деление нацело), % (целочисленный остаток от деления), ^ (возведение в степень), SHL (побитовый сдвиг влево), SHR (побитовый сдвиг вправо), AND (побитовая конъюнкция), OR (побитовая дизъюнкция), XOR (побитовое исключающее ИЛИ) NOT (побитовое отрицание).
Приоритеты операций:
1) NOT
2) ^, SHL, SHR
3) *, /, %, AND
4) +, -, OR, XOR
При выполнении побитовых операций считать, что все числа 8 разрядные и отрицательные числа хранятся в дополнительном коде.
Максимальный уровень вложенности скобок равен 10. Так, ваша программа, например, должна уметь подсчитать значения следующего выражения: (3+23/2–(22%12+3*-12 SHR 2)+(1 SHL 2–(12 AND 8-(1–2)+3 OR -8)))–NOT(12 XOR 7+6)
и вывести пошагово процесс вычисления с указанием внутреннего машинного представления для побитовых операций.
Для подсчета и хранения арифметического выражения использовать бинарное дерево.
Пример выходных данных (для приведенного выше выражения):
23 / 2 = 11
3 + 11 = 14
22 % 12 = 10
-12 (1111 0100) SHR 2 = -3 (1111 1101)
3 * (-3) = -9
10 + (-9) = 1
14 - 1 = 13
1 (0000 0001) SHL 2 = 4 (0000 0100)
12 (0000 1100) AND 8 (0000 1000) = 8 (0000 1000)
1 - 2 = -1
8 - (-1) = 9
9 + 3 = 12
12 (0000 1100) OR -8 (1111 1000) = -4 (1111 1100)
4 - (-4) = 8
13 + 8 = 21
12 (0000 1100) XOR 7 (0000 0111) = 11 (0000 1011)
11 + 6 = 17
NOT (17 (0001 0001)) = -18 (1110 1110)
21 - (-18) = 39
| Гарантия на работу | 1 год |
| Средний балл | 4.52 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |