-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConsoleApplication1.cpp
More file actions
130 lines (128 loc) · 3.91 KB
/
ConsoleApplication1.cpp
File metadata and controls
130 lines (128 loc) · 3.91 KB
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <iostream>
using namespace std;
int main() {
setlocale(0," ");
M1:
cout << "\n" << "\n" << "(для полного завершения программы нажмите 4)" << "\n" << "Введите номер задания : ";
int numberOfTask;
cin >> numberOfTask;
while (numberOfTask) {
switch (numberOfTask)
{
case 1:
int a;
cout << "Введите тип данных, где:\n 1 - int\n 2 - short int\n 3 - long int\n 4 - float\n 5 - double\n 6 - long double\n 7 - char\n 8 - bool" << endl;
cout << "Для выбора другого задания нажмите 9" << endl;
cin >> a;
while (a) {
switch (a)
{
case 1: cout << "int занимает " << sizeof(int) << " байта" << endl; break;
case 2: cout << "short int занимает " << sizeof(short int) << " байта" << endl; break;
case 3: cout << "long int занимает " << sizeof(long long int) << " байт" << endl; break;
case 4: cout << "float занимает " << sizeof(float) << " байта" << endl; break;
case 5: cout << "double занимает " << sizeof(double) << " байт" << endl; break;
case 6: cout << "long double занимает " << sizeof(long double) << " байт" << endl; break;
case 7: cout << "char занимает " << sizeof(char) << " байт" << endl; break;
case 8: cout << "bool занимает " << sizeof(bool) << " байт" << endl; break;
case 9: cout << "Программа завершила свою работу" << endl; goto M1;
default: cout << "Введено неверное значение" << endl; break;
}
cin >> a;
};
break;
case 2:
cout << "Введите число от -2 147 483 648 до 2 147 483 647: ";
int value1,cnt1,bitShiftInt;
cin >> value1;
cout << "Введите на сколько байтов влево хотите сдвинуть: ";
cin >> bitShiftInt;
unsigned int order,mask;
order = sizeof(value1) * 8;
mask = 1 << order - 1 - bitShiftInt;
cnt1 = 0;
for (int i = 1; i <= order; i++)
{
if (i % order - 1 == 0) {
if ((value1 & mask) == 0) {
cout << "\x1b[33m0\x1b[0m";
}
else {
cout << "\x1b[33m1\x1b[0m";
}
putchar(' ');
}
else {
if (((mask & value1) == 0) && (cnt1 == 0)) {
putchar(value1 & mask ? '1' : '0');
}
else {
cnt1 += 1;
if ((mask & value1) == 0) {
cout << "\x1b[31m0\x1b[0m";
}
else {
cout << "\x1b[31m1\x1b[0m";
}
}
}
value1 <<= 1;
if (i % 8 == 0)
{
putchar(' ');
}
};
goto M1;
break;
case 3:
cout << "Введите число, отделив целую часть от дробной точкой: ";
union {
float value2;
int valueInt;
};
cin >> value2;
int bitShiftF,cnt2;
cout << "Введите на сколько байтов влево хотите сдвинуть: ";
cin >> bitShiftF;
unsigned int orderSecond, mask2;
orderSecond = sizeof(value2) * 8;
mask2 = 1 << orderSecond - 1 - bitShiftF;
cnt2 = 0;
for (int i = 1; i <= orderSecond; i++)
{
if (i % orderSecond - 1 == 0) {
if ((valueInt & mask2) == 0) {
cout << "\x1b[33m0\x1b[0m";
}
else {
cout << "\x1b[33m1\x1b[0m";
}
putchar(' ');
}
else {
putchar(mask2 & valueInt ? '1' : '0');
}
valueInt <<= 1;
if (i == 9) {
putchar(' ');
}
if (i > 9) {
if (i % 8 == 0) {
putchar(' ');
}
else if (i % 16 == 0) {
putchar(' ');
}
}
}
goto M1;
break;
case 4:
cout << "Программа завершена!";
return 0;
default:
cout << "Вы ввели неверный номер задания, попробуйте ещё раз";
goto M1;
}
}
}