Поразрядные логические операции
Цель лабораторной работы: изучение концепций и освоение технологии структурного программирования, приобретение навыков структурного программирования на языке Турбо Паскаль простейших вычислительных задач.
Задание на программирование: используя технологию структурного программирования разработать линейную программу решения индивидуальной вычислительной задачи на поразрядные логические операции над машинными кодами.
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание и выполнить постановку задачи: сформулировать условие, определить входные и выходные данные.
2) Разработать математическую модель вычислений.
3) Выполнить все необходимые вычисления вручную и принять полученные результаты в качестве контрольных значений.
4) Составить программу на языке Турбо Паскаль.
5) В программе использовать исходные данные типа shortint, а тип результата – byte.
6) Выходные данные (сообщения)выводить на экран в развернутой форме.
7) Проверить и продемонстрировать преподавателю работу программы.
8) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, текст программы.
Варианты индивидуальных заданий
Выполнить поразрядные логические операции над машинными кодами
1.
27 AND 81
-27 XOR 81
107 SHR 3
NOT 27 XOR -81 AND (-27 OR NOT 90)
2.
15 AND 111
15 OR -111
111 SHR 3
NOT 15 OR (NOT 111 XOR -15) AND 61
3.
17 AND 97
17 XOR -97
17 SHL 2
-17 AND (NOT 85 OR -30) XOR NOT 97
4.
37 AND 83
-37 OR 83
37 SHL 1
NOT 37 XOR -31 AND (NOT 83 OR -19)
5.
-81 OR 42
81 XOR 42
42 SHL 1
(NOT 81 OR -42) AND NOT -91 XOR 14
6.
65 AND 35
65 XOR -35
35 SHL 2
NOT 35 AND -65 XOR (NOT 27 OR -80)
7.
109 OR -17
109 AND 17
17 SHL2
(17 OR NOT –109) AND NOT –70 XOR 35
8.
107 OR -49
107 XOR 49
49 SHL1
(NOT 107 XOR -60) AND 49 XOR NOT -112
9.
72 AND 27
72 OR -27
72 SHR 2
NOT 27 XOR -72 AND (NOT 47 OR -19)
10.
106 AND 12
106 XOR -12
106 SHR2
NOT -106 XOR 12 AND (NOT 88 OR -26)
11.
95 AND -18
95 XOR 18
95 SHR2
NOT 95 OR -18 AND (NOT 74 OR -91)
12.
109 AND 24
109 OR -24
109 SHR 3
NOT 109 AND -24 OR (13 AND NOT -89)
13.
47 AND 11
47 XOR -11
47 SHL 1
11 OR NOT -47 AND (104 OR NOT 36)
14.
98 AND -25
98 XOR 25
98 SHR 3
NOT -98 OR 25 AND (46 XOR NOT -29)
15.
100 AND 17
100 OR -17
100 SHR 3
100 OR NOT -17 AND (NOT 36 OR -11)
16.
107 AND -15
107 XOR 15
107 SHR 3
107 XOR NOT -15 AND (NOT 52 OR -75)
17.
105 AND 13
105 XOR -13
105 SHR4
105 OR NOT -13 AND (NOT 86 XOR -41)
18.
109 AND 18
109 OR -18
109 SHR 3
109 OR NOT -18 AND (NOT 58 XOR -65)
19.
95 AND 20
95 OR -20
95 SHR 2
20 XOR NOT -95 AND (NOT 20 OR -37)
20.
84 AND 35
84 XOR -35
35 SHL 2
84 XOR NOT -35 AND (NOT 22 OR -91)
21.
12 AND 111
12 OR -111
12 SHL 3
12 XOR NOT -111 AND (NOT 48 XOR -67)
22.
110 AND 13
110 OR -13
110 SHR 2
110 OR NOT -13 AND (NOT 80 OR -25)
23.
104 AND 11
104 XOR 11
104 SHR 2
104 XOR NOT -11 AND (NOT 36 XOR -75)
24.
106 AND 21
106 XOR -21
106 SHR 3
106 OR NOT -21 AND (NOT 66 XOR -77)
25.
101 AND 18
101 OR -18
101 SHR 3
101 XOR NOT -18 AND (NOT 90 OR -53)
26.
105 AND 18
105 XOR -18
105 SHR 3
NOT 105 XOR -18 AND (-56 OR NOT 21)
27.
108 AND 11
108 XOR -11
108 SHR 3
108 XOR NOT -11 AND (NOT 76 OR 35)
28.
81 AND 24
81 XOR -24
81 SHL 1
81 XOR NOT -24 AND (NOT 76 OR 61)
29.
105 AND -15
105 XOR 15
105 SHR 2
NOT 105 AND -15 XOR (NOT 77 OR -70)
30.
-99 OR -27
99 AND 27
99 SHL1
(27 OR NOT -99) AND NOT -90 XOR -37
31.
97 OR -29
97 XOR 29
97 SHR3
(NOT 97 XOR -29) AND 39 XOR NOT -22
32.
79 AND 24
79 OR -24
79 SHL 1
NOT 79 AND -24 OR (33 AND NOT 69)
33.
87 AND 11
87 XOR -11
11 SHL 3
11 OR NOT -87 AND (106 OR NOT 39)
34.
48 AND -25
48 XOR 25
48 SHR 2
NOT -48 OR -25 AND (116 XOR NOT -9)
35.
10 AND 117
10 OR -117
10 SHL 3
(10 OR NOT -117) AND NOT 36 OR -11
36.
17 AND -115
17 XOR 115
17 SHL 3
17 XOR NOT -115 AND (NOT 42 OR -65)
37.
15 AND 103
15 XOR -103
15 SHL4
(15 OR NOT -103) AND NOT 26 XOR -71
38.
19 AND 108
19 OR -108
19 SHL 3
(19 XOR NOT -108) AND (NOT 78 XOR -35)
39.
14 AND 120
14 OR -120
120 SHR 2
(120 XOR NOT -14) AND NOT 40 OR -67
40.
19 AND 102
19 XOR -102
19 SHL3
(NOT -19 XOR 102) AND (NOT 18 OR -96)
41.
95 AND -18
95 XOR 18
95 SHR2
NOT 95 OR -18 AND (NOT 74 OR -91)
42.
109 AND 24
109 OR -24
24 SHL 2
NOT 109 AND -24 OR (13 AND NOT -89)
43.
47 AND 11
47 XOR -11
11 SHR 3
11 OR NOT -47 AND (104 OR NOT 36)
44.
98 AND -25
98 XOR 25
98 SHL 1
NOT -98 OR 25 AND (46 XOR NOT -29)
45.
100 AND 17
100 OR -17
100 SHR 2
100 OR NOT -17 AND (NOT 36 OR -11)
46.
107 AND -15
107 XOR 15
15 SHL 3
107 XOR NOT -15 AND (NOT 52 OR -75)
47.
105 AND 13
105 XOR -13
13 SHL3
105 OR NOT -13 AND (NOT 86 XOR -41)
48.
109 AND 18
109 OR -18
18 SHL 3
109 OR NOT -18 AND (NOT 58 XOR -65)
49.
95 AND 20
95 OR -20
95 SHR 2
20 XOR NOT -95 AND (NOT 20 OR -37)
50.
84 AND 35
84 XOR -35
33 SHL 2
84 XOR NOT -35 AND (NOT 22 OR -91)
Пример решения для варианта задания вида:
111 AND -12
-111 AND -12
111 OR 12
111 XOR 12
111 SHR 2
12 SHL 3
-111 AND (NOT 12 OR111) OR -12
Математическая модель (ручной счёт)
1. Находим внутреннее представление используемых десятичных чисел. Для этого переводим их в двоичную форму и размещаем каждое в 1 байте.
= | |||||||||||
-1 | = |
= | ||||||||||
-1 | = |
2. Выполняем поразрядные логические операции и переводим получившийся результат в десятичную форму.
= | ||||||||||||||||
-1 | = | |||||||||||||||
A | N | D | -1 | = |
011001002=1×26+1×25+1×22=64+32+4=10010
-1 | = | |||||||||||||||
-1 | = | |||||||||||||||
-1 | A | N | D | -1 | = |
100100002=1×27+1×24=128+16=14410
= | |||||||||||||||
= | |||||||||||||||
O | R | = |
011011112=1×26+1×25+1×23+1×22+1×21+1×20=64+32+8+4+2+1=11110
= | ||||||||||||||||
= | ||||||||||||||||
X | O | R | = |
011000112=1×26+1×25+1×21+1×20=64+32+2+1=9910
= | |||||||||||||||
S | H | R | = |
000110112=1×24+1×23+1×21+1×20=16+8+2+1=2710
= | ||||||||||||||
S | H | L | = |
011000002=1×26+1×25=64+32=9610
= | |||||||||||||
N | O | T | = |
N | O | T | = | |||||||||||||||
= | ||||||||||||||||||
(N | O | T | 2) | O | R | = |
-1 | = | |||||||||||||||||||||||
N | O | T | O | R | = | |||||||||||||||||||
-1 | A | N | D | (N | O | T | O | R | 1) | = |
-1 | A | N | D | (N | O | T | O | R | 1) | = | ||||||||||||||||||
-1 | = | |||||||||||||||||||||||||||
(-1 | A | N | D | (N | O | T | O | R | 1)) | O | R | -1 | = |
111101012=1×27+1×26+1×25+1×24+1×22+1×20=128+64+32+16+4+1=24510
Пример программы
Program Log_Oper;
{Выполнение поразрядных логических операций над целыми числами}
Var
a,b,c,d:Shortint;
e:Byte;
Begin
a := 111;
b := -111;
c := 12;
d := -12;
e := a AND d;
WriteLn('111 AND -12 =',e,' (контр. значение 100)');
e := b AND d;
WriteLn('-111 AND -12 =',e,' (контр. значение 144)');
e := a OR c;
WriteLn('111 OR 12 =',e,' (контр. значение 111)');
e := a XOR c;
WriteLn('111 XOR 12 =',e,' (контр. значение 99)');
e := a shr 2;
WriteLn('111 >> 2 =',e,' (контр. значение 27)');
e := c shl 3;
WriteLn('12 << 3 =',e,' (контр. значение 96)');
e := b AND (NOT c OR a) OR d;
WriteLn('-111 AND(NOT12 OR 111)OR -12 =',e,' (контр. знач. 245)');
ReadLn;
End.
Лабораторная работа №4
Поиск экстремума
Цель лабораторной работы: изучение концепций и освоение технологии структурного программирования, приобретение навыков структурного программирования на языке Турбо Паскаль логических задач.
Задание на программирование: используя технологию структурного программирования разработать разветвляющуюся программу для решения индивидуальной задачи поиска экстремальных значений.
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание и выполнить постановку задачи: сформулировать условие, определить входные и выходные данные.
2) Разработать математическую модель вычислений.
3) Построить схему алгоритма решения задачи двумя способами:
- с использованием управляющей структуры «Выбор»;
- с использованием управляющей структуры «Обход».
4) Составить программу на языке Турбо Паскаль.
5) Входные данные целого типа Integerвводить с клавиатуры по запросу.
Выходные данные (сообщения)выводить на экран в развернутой форме.
6) Подготовить набор тестов для проверки логики работы программы с различными исходными данными. Набор тестов представить в виде таблицы с графами: номер теста, входные данные, выходные данные.
7) Запустить программу на исполнение и проверить её работу на каждом тесте.
8) Продемонстрировать преподавателю работу программы.
9) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения, текст программы, контрольные примеры.
Варианты индивидуальных заданий
1. x = min(min(a, c) + a, max[(b, d)).
2. x = max(min(a, b), min(c, d) + a).
3. x = min(max(a, c) – b, min(b, d)).
4. x = max(min(b, d), min(a, c) + b).
5. x = min(max(b, c) + c, min(a, d)).
6. x = max(min(a, c) + b, min(b, d) –c).
7. x = min(max(a, d) + d, min(b, c)).
8. x = max(min(b, d), max(a, c) – d).
9. x = max(min(b, c) + a, min(a, d)).
10. x = min(min(b, d) max(a, c) – b).
11. x = min(min(a, c) + b, min(b, d)).
12. x = max(min(b, c) + a, max(a, d)).
13. x = min(min(a, c), max(b, d) – a).
14. x = max(min(a, b) + b, min(c, d)).
15. x = min(max(a, c) – b, min(b, d) – c).
16. x = max(min(b, c) – d), min(a, b)).
17. x = min(max(b, d), min(a, c) + d).
18. x = max(min(a, c) – b, min(b, d)).
19. x = min(max(a, b), min(b, c) + d).
20. x = max(min(b, c) + c, min(a, d)).
21. x = max(min(b, d) + d, min(a, c)).
22. x = min(min(b, d), max(a, d) – a).
23. x = max(max(a, b) + min(b,d), b + d).
24. x = min(min(a, c) + max(a, b), c + d).
25. x = max(min(b, d) + min(a, b), a – d).
26. x = min(max(a, b) + c, max(b, c) + d).
27. x = max(max(a, b) – c, min(b, c) + d).
28. x = min(max(b, c) + b, min(c, d) + a).
29. x = max(min(a, b) + d, min(b, c) – a).
30. x = min(max(a, c) – b, max(a, b) + d).
31. x = max(min((a, d) + c, min(b, c) + b).
32. x = min(max(b, c) + b, min(a, c) + c + d).
33. x = max(max(a, c) – a, min(b, c) + d).
34. x = min(min(a, b) + c, min(a, c) – d).
35. x = min(min(a, d) – b, max(b, d) + c).
36. x = max(max(a, c) + c, max(b, c) + d).
37. x = min(min(a, b) + b, max(a, c) – d).
38. x = max(max(a, c) – c, min(b, c) + d).
39. x = min(min(b, c) + d, min(a, c) – a).
40. x = max(max(a, b) – c, max(a, c) – d).
41. x = min(max(a, c) + d, min(a, b) + a).
42. x = max(min(b, c) + a, max(a, c) + d).
43. x = min(max(a, b) – d, max(b, c) – a).
44. x = max(min(a, c) + c, min(b, c) + d).
45. x = min(max(a, b) – b, max(b, c) – d).
46. x = min(max(a, b, c) + a, max(a, c, d) + b).
47. x = max(min(a, b, c) – b, min(b, c, d) – c).
48. x = min(max(a, b, c) – c, min(a, b, d) + a).
49. x = min(min(a, b, c) + a, max(b, c, d) – b).
50. x = max(max(a, c, d) – b, min(a, b, c) + d).
Пример схемы алгоритма и текста программы определения экстремума для варианта задания вида:
x = max(min(a, b), max(c, d))
Начало |
Ввод a, b, c, d |
min = a |
min > b |
a < b |
min = b |
max = c |
min = a |
min = b |
c > d |
да нет
max < d |
max = c |
max = d |
max = d |
min > max |
x = min |
x = max |
x = min |
x < max |
Вывод x |
x = max |
Вывод x |
Конец |
Пример программы
Program Extremum;
{Определение максимального или минимального значения
с использованием структур "выбор" и "обход".
Вычислить x = max(min(a,b), max(c,d))}
Var
a,b,c,d:Integer; {исходные данные}
max,min:Integer; {промежуточные значения}
x:Integer; {результат вычисления}
Begin
{Ввод исходных данных}
WriteLn('Введите значения a,b,c,d: ');
ReadLn(a,b,c,d);
{Решение задачи с использованием структуры "Выбор"}
If a<b {Определяем наименьшее значение между a и b}
Then min:=a
Else min:=b;
If c>d {Определяем наибольшее значение между c и d}
Then max:=c
Else max:=d;
If min>max {Определяем наибольшее значение между max и min}
Then x:=min
Else x:=max;
{Вывод результата решения с использованием структуры "Выбор"}
WriteLn('Использование структуры "Выбор": x = ',x);
{Решение задачи с использованием структуры "Обход"}
min:=a; {Определяем наименьшее значение между a и b}
If min>b
Then min:=b;
max:=c; {Определяем наибольшее значение между c и d}
If max<d
Then max:=d;
x:=min; {Определяем наибольшее значение между max и min}
If x<max
Then x:=max;
{Вывод результата решения с использованием структуры "Обход"}
WriteLn('Использование структуры "Обход": x = ',x);
ReadLn;
End.
Лабораторная работа №5