Выполнить поразрядные логические операции над машинными кодами
1.
117 AND 90
-117 XOR 90
117 >> 3
NOT 21 XOR -13 AND (-23 OR NOT 9)
2.
115 AND 106
115 OR -106
115 → 4
NOT 17 OR (NOT 111 XOR -19) AND 91
3.
107 AND 37
107 XOR -37
25 ← 2
-21 AND (NOT 75 OR -20) XOR NOT 59
4.
27 AND 13
-27 OR 13
27 ← 2
NOT 21 XOR -3 AND (NOT 26 OR -13)
5.
-21 OR 43
21 XOR 43
43 ← 1
(NOT 19 OR -6) AND NOT -9 XOR 4
6.
55 AND 15
55 XOR -15
15 ← 3
NOT 7 AND -5 XOR (NOT 127 OR -8)
7.
99 OR -17
99 AND 17
17 ←2
(18 OR NOT -8) AND NOT -7 XOR 3
8.
29 OR -49
29 XOR 49
49 ←2
(NOT 8 XOR -6) AND 9 XOR NOT -12
9.
42 AND 17
42 OR -17
42 → 3
NOT 25 XOR -4 AND (NOT 22 OR -10)
10.
36 AND 12
36 XOR 12
36 ←2
NOT -3 XOR 15 AND (NOT 8 OR -6)
11.
25 AND 18
25 XOR 18
25 ←2
NOT 23 OR -4 AND (NOT 24 OR -9)
12.
39 AND 14
39 OR -14
39 ← 1
NOT 17 AND -5 OR (25 AND NOT -9)
13.
49 AND 11
49 XOR 11
49 → 2
15 OR NOT –3 AND (14 OR NOT 16)
14.
108 AND 35
108 XOR 35
31 ← 2
NOT -7 OR 8 AND (26 XOR NOT -9)
15.
120 AND 37
120 OR -37
120 → 2
85 OR NOT -9 AND (NOT 46 OR -13)
16.
117 AND 80
117 XOR 80
117 → 3
105 XOR NOT -15 AND (NOT 82 OR -25)
17.
125 AND 14
125 XOR 14
100 →4
110 OR NOT -25 AND (NOT 46 XOR -11)
18.
119 AND 18
119 OR -18
119 → 3
80 OR NOT -11 AND (NOT 48 XOR -15)
19.
125 AND 20
125 OR -20
50 ← 2
40 OR NOT -19 AND (NOT 50 XOR -7)
20.
94 AND 15
94 XOR 15
94 → 2
86 XOR NOT -17 AND (NOT 40 OR -9)
21.
102 AND 31
102 OR -31
102 → 3
35 XOR NOT -9 AND (NOT 28 OR -17)
22.
90 AND 11
90 OR -11
20 ← 2
17 XOR NOT -11 AND (NOT 30 OR -15)
23.
74 AND 111
74 XOR 111
54 ← 1
28 OR NOT -13 AND (NOT 16 XOR -25)
24.
36 AND 21
36 XOR 21
26 ← 2
14 OR NOT -15 AND (NOT 26 XOR -17)
25.
61 AND 18
61 OR -18
61 ← 1
9 XOR NOT -21 AND (NOT 60 OR -5)
26.
75 AND 26
75 XOR 26
22 ← 2
NOT 80 XOR -31 AND (-16 OR NOT 11)
27.
81 AND 14
|
|
81 XOR 14
21 ← 3
70 XOR NOT -11 AND (NOT 36 OR 15)
28.
111 AND 14
111 XOR 14
11 ← 3
15 XOR NOT -9 AND (NOT 26 OR 31)
Пример программы
Формулировка задания:
Выполнить поразрядные логические операции над целыми числами
41 AND -21
-41 OR 21
41 XOR 21
41 ← 2
NOT 43 OR -21 AND (NOT -41 XOR 29)
Математическая модель (ручной счёт)
1. Находим внутреннее представление используемых десятичных чисел. Для этого переводим их в двоичную форму и размещаем каждое в 1 байте.
4 | 1 | 2 | ||||||||||||||||||
4 | 0 | 2 | 0 | 2 | ||||||||||||||||
1 | 2 | 0 | 1 | 0 | 2 | |||||||||||||||
0 | 1 | 0 | 5 | 2 | ||||||||||||||||
0 | 4 | 2 | 2 | |||||||||||||||||
1 | 2 | 1 | 2 | |||||||||||||||||
0 | 0 | 0 | ||||||||||||||||||
1 | ||||||||||||||||||||
4 | 1 | = | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | ||||||||||
-4 | 1 | = | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | ||||||||||
2 | 1 | = | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | ||||||||||
-2 | 1 | = | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 |
2. Выполняем необходимые поразрядные логические операции и переводим получившиеся результаты в десятичную форму.
4 | 1 | = | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | |||||||||||
-2 | 1 | = | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | |||||||||||
4 | 1 | A | N | D | -2 | 1 | = | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | = | 4 | 1 | |||
-4 | 1 | = | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | |||||||||||
2
| 1 | = | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | |||||||||||
-4 | 1 | O | R | 2 | 1 | = | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | = | 2 | 1 | 5 |
4 | 1 | = | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | |||||||||
2 | 1 | = | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | |||||||||
4 | 1 | X | O | R | 2 | 1 | = | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | = | 6 | 0 | |
4 | 1 | = | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | |||||||||
4 | 1 | ← | 2 | = | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | = | 1 | 6 | 4 |
-4 | 1 | = | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | ||||||||||||||||||||||||||
N | O | T | -4 | 1 | = | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | |||||||||||||||||||||||
4 | 3 | = | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | ||||||||||||||||||||||||||
N | O | T | 4 | 3 | = | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | |||||||||||||||||||||||
N | O | T | -4 | 1 | = | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | |||||||||||||||||||||||
2 | 9 | = | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | ||||||||||||||||||||||||||
(N | O | T | -4 | 1) | X | O | R | 2 | 9 | = | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | ||||||||||||||||||
-2 | 1 | = | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | ||||||||||||||||||||||||||
(N | O | T | -4 | 1) | X | O | R | 2 | 9 | = | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | ||||||||||||||||||
-2 | 1 | A | N | D | (N | O | T | -4 | 1 | X | O | R | 2 | 9) | = | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | |||||||||||||
-2 | 1 | A | N | D | (N | O | T | -4 | 1 | X | O | R | 2 | 9) | = | 0 | 0 | 1 | 0
| 0 | 0 | 0 | 1 | |||||||||||||
N | O | T | 4 | 3 | = | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | |||||||||||||||||||||||
N | O | T | 4 | 3 | O | R | -2 | 1 | A | N | D | (N | O | T | -4 | 1 | X | O | R | 2 | 9) | = | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | = | 2 | 4 | 5 |
Схема алгоритма решения
Начало |
a = 41 & -21 |
Ввод a |
b = -41 | 21 |
Ввод b |
c = 41 ^ 21 |
Ввод c |
d = 41 << 2 |
Ввод d |
e = ~43 | -21 & (~-41 ^ 29) |
Ввод e |
Конец |
Текст программы
#include<stdio.h>
int main()
{unsigned char a, b, c, d, e ;
a = 41 & -21 ;
printf("41 AND -21 = (41) = %i\n", a) ;
b = -41 | 21 ;
printf("-41 OR 21 = (215) = %i\n", b) ;
c = 41 ^ 21 ;
printf("41 XOR 21 = (60) = %i\n", c) ;
d = 41 << 2 ;
printf("41 << 2 = (164) = %i\n", d) ;
e = ~43 | -21 & (~-41 ^ 29) ;
printf("NOT 43 OR -21 AND (NOT-41 XOR 29) = (245) = %i\n", e) ;
return 0 ;
}
Скриншот контрольного примера выполнения программы
Лабораторная работа №2
Операторы ветвления
Цель лабораторной работы: приобретение навыков структурного программирования на языке C/C++ при решении задач с использованием операторов ветвления if и switch.
Задание на программирование: используя технологию структурного программирования разработать программу для решения индивидуальной задачи определения места нахождения точки с произвольно заданными координатами на координатной плоскости. В случае если точка попадает в одну их выделенных областей, программа должна определять площадь этой области по аналитической формуле.
|
|
При решении должны быть использованы условный оператор if и оператор-переключатель switch.
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание и выполнить постановку задачи: сформулировать условие, определить входные и выходные данные.
2) Разработать математическую модель:
- привести уравнения линий, ограничивающих выделенные штриховкой области;
- описать условия попадания точки в каждую выделенную область;
- составить аналитические формулы определения площади каждой выделенной области.
3) Построить схему алгоритма решения задачи.
4) Составить программу на языке C/C++.
5) Входные данные должны вводиться с клавиатуры по запросу.
Выходные данные (сообщения) должны выводиться на экран в развернутой форме.
6) Использовать стандартные потоковые объекты ввода/вывода cin и cout.
7) Проверить и продемонстрировать преподавателю работу программы на полном наборе тестов.
8) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения задачи, текст программы, контрольные примеры.
Варианты индивидуальных заданий
1. 2.
3. 4.
5. 6.
7. 8.
9. 10.
11. 12.
13. 14.
15. 16.
17. 18.
19. 20.
21. 22.
23. 24.
25. 26.
27. 28.
29. 30.
Пример разработки математической модели и схемы алгоритма решения задачи для варианта задания вида:
Математическая модель (условия принадлежности точек выделенным областям)
- условие 1 (принадлежность области М1):
(x-1)2 + y2 > 1 {вне правой окружности}
x < 2 {левее линии x = 2}
x > 1 {правее линии x = 1}
y > 0 {выше линии y = 0}
y < 2 {ниже линии y = 2}
Площадь области М1:
площадь прямоугольника (2 * 1) – площадь четверти круга (πr2 / 4) = 2 – π / 4≈1.2146
- условие 2 (принадлежность области М2):
(x + 1)2 + y2 > 1 {вне левой окружности}
x > -2 {правее линии x = -2}
y < 1 {ниже линии y = 1}
x < -1 {левее линии x = -1}
y > 0 {выше оси x }
Площадь области М2:
площадь квадрата (1 * 1) – площадь четверти круга (πr2 / 4) = 1 – π / 4 ≈0.2146
- условие 3 (принадлежность области М3):
(x + 1)2 + y2 < 1 {внутри левой окружности}
x2 + y2 < 1 {внутри центральной окружности}
y > 0 {выше оси x }
Площадь области М3:
площадь сектора 1200 (πr2 / 3) – площадь треугольника ( / 2 * 0.5) =
π / 3 – / 2 *0.5 = π / 3 – / 4 =0.6142
- условие 4 (принадлежность области М4):
x2 + y2 > 1 {вне центральной окружности}
(x – 1)2 + y2 < 1 {внутри правой окружности}
x2 + (y + 1)2 > 1 {вне нижней окружности}
Площадь области М4:
площадь квадрата (1 * 1) - четверть площади круга (πr2 / 4) – 2*(площадь прямоугольника (1 * (1 - /2)) – площадь сектора 600 (πr2 / 6) + площадь треугольника ( / 2 * 0.5)) = 1 - π / 4 – 2 * (1 - / 4 - π / 6) = / 2 + π / 3 - π / 4 – 1 ≈ 0.1278
- условие 5 (принадлежность области М5):
x2 + (y+1)2 > 1 {вне нижней окружности}
y > -2 {выше линии y = -2}
y < -1 {ниже линии y = -1}
x > -1 {правее линии x = -1}
x < 0 {левее оси y}
Площадь области М5:
площадь квадрата (1 * 1) – площадь четверти круга (πr2 / 4) = 1 – π / 4 ≈ 0.2146
Схема алгоритма решения
Начало |
Ввод x, y |
усл. 1 |
да нет
усл. 2 |
Вывод (.) в М1 |
да нет
усл. 3 |
Вывод (.) в М2 |
да нет
усл. 4 |
i=1 |
Вывод (.) в М3 |
да нет
усл. 5 |
i=2 |
Вывод (.) в М4 |
да нет
Вывод (.) в М5 |
Вывод вне зон |
i=4 |
i=3 |
i=5 |
1 |
i |
1 |
S1=2-π/4 |
1
S2=1-π/4 |
2
S3=π/3- /4 |
3
S4= /2+π/12-1 |
4
S5=1-π/4 |
5
Конец |
Текст программы
//Определение номера области, в которую попадает точка с произвольно заданными координатами на плоскости, и площади этой области
#include<iostream.h>
#include<math.h>
#include <locale.h>
int main()
{int i = 0 ; //номер области на рисунке
float x, y, //координаты точки
s1, s2, s3, s4, s5 ; //площади областей
setlocale(LC_ALL,"Russian") ;
cout << "\nВведите координаты точки: x, y " ;
cin >> x >> y ;
if(y > 0 && y < 2 && x > 1 && x < 2 && (x – 1) * (x – 1) + y * y >1)
{cout << "Точка в области M1. " ; i = 1 ;
}
else if(x > -2 && y < 1 && x < -1 && y > 0 &&
(x + 1) * (x + 1) + y * y > 1)
{cout << "Точка в области М2. " ; i = 2 ;
}
else if((x+1) * (x+1) + y * y < 1 && x * x + y * y < 1 && y > 0)
{cout << "Точка в области М3. " ; i = 3 ;
}
else if(x * x + y * y > 1 && (x - 1) * (x - 1) + y * y < 1 &&
x * x + (y + 1) * (y + 1) < 1)
{cout << "Точка в области М4. " ; i = 4 ;
}
else if(y < -1 && y > -2 && x < 0 && x > -1 &&
x * x + (y + 1) * (y + 1) > 1)
{cout << "Точка в области М5. " ; i = 5 ;
}
else cout << "Точка вне выделенных областей" ;
cout.precision(4); //число знаков после дес. точки
switch(i)
{case 1: cout << "S1 = " << (s1 = 2 - M_PI / 4) ;
break ;
case 2: cout << "S2 = " << (s2 = 1 - M_PI / 4) ;
break ;
case 3: cout << "S3 = " << (s3 = M_PI/3 – sqrt(3)/4) ;
break ;
case 4: cout << "S4 = " << (s4 = sqrt(3)/2 + M_PI/3 - M_PI/4-1) ;
break ;
case 5: cout << "S5 = " << (s5 = 1 - M_PI / 4) ;
}
cout << "\n Повторить-1, Выход-2: " ;
cin >> i ;
if (i == 1) main() ;
return 0 ;
}
Дата добавления: 2018-04-05; просмотров: 2682; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!