Поразрядные логические операции

Цель лабораторной работы: изучение концепций и освоение технологии структурного программирования, приобретение навыков структурного программирования на языке Турбо Паскаль простейших вычислительных задач.

Задание на программирование: используя технологию структурного программирования разработать линейную программу решения индивидуальной вычислительной задачи на поразрядные логические операции над машинными кодами.

Порядок выполнения работы:

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

Наши рекомендации