
- •Курсова робота ( частина і )
- •Теоретична частина
- •2.1.4. Дійсний тип
- •2.2. Завдання 2. Внутрішні формати похідних типів
- •2.2.1. Представлення рядку символів в пам’яті комп’ютера.
- •2.2.2. Представлення перерахувань в пам’яті комп’ютера.
- •2.2.3. Представлення масивів в пам’яті комп’ютера.
- •2.2.4. Представлення структур в пам’яті комп’ютера.
- •2) Unsigned b:7;
- •2.2.5. Представлення об'єднань в пам’яті комп’ютера.
- •Double e;
- •2) Unsigned long c;
- •Алгоритм розв’язання задачі
- •Результат виконання программи
2.1.4. Дійсний тип
float d1 = -240.24e-10 = -240.24 * 10-10 = -0.000000024024;
Переведем число у 16 та 2 СЧ:
0.000000024024*16= 0.000000384384; 0.000000384384*16=0.000006150144;
0.000006150144 *16= 0.000098402304; 0.000098402304*16= 0.001574451264;
0.001574451264*16=0,025190989824;
0,025190989824*16=0,403055837184; 0,403055837184*16=6,448893394944;
0.448893394944*16=7.18229432; 0. 18229432 *16 = 2.91670291;
0.91670291*16=14,66724656; 0.66724656*16=10,67594496;0.67594496*16=10…;
0.81511936*16=13….
-0.00000002402410 = -0.000000672EAAD16 = 0000.0000 0000 0000 0000 0000 0000 0110 0111 0010 1110 1010 1010 1101 00002
Тип float займає ВПК 4 байт (32 біт)
З них 8 біт виділяється під експоненту, 1 біт під знак числа і решта 23 під мантису.
Необхідно визначити значення m (мантиса), s(знак) та e(експонента).
s = 1, бо число відємне.
1.100 1110 0101 1101 0101 0101 1010
Нормалізуємо число:
1.100 1110 0101 1101 0101 0101 1010 2* 10-11010
Врахували заокруглення і те ,що для мантиси виділяється 23 біти , добавившии 1 до числа:
1. 100 1110 0101 1101 0101 01102 * 10-11010
Знайдемо експоненту е = 12710 -26 = 10110 = 6516 = 0110 01012
Знайдемо мантису m:
m = 100 1110 0101 1101 0101 0110
Зборка за схемою:
1біт |
8 біт |
23 біта |
s |
e |
m |
1 |
0110 0101 |
100 1110 0101 1101 0101 0110 |
1011 0010 1100 1110 0101 1101 0101 0110=B2 СE 5D 5616
Тепер для отримання значення числа ВПК, необхідно обернути його побайтно, бо ВПК числа типу float у зворотньому порядку розміщення байт числа.
Отже, ВПК (d1)- 56 5D CE B216
2.2. Завдання 2. Внутрішні формати похідних типів
Визначити внутрішнє представлення в пам’яті комп’ютера даних похідних типів.
2.2.1. Представлення рядку символів в пам’яті комп’ютера.
char *string19 = "\xcb\34\\\xffh 12 \4d4\\\\\n";
Та виконати наступні переприсвоювання:
string19[0] = ‘3’;
string19 [2] = ‘1’;
string19 [4] = ‘2’;
string19 [6] = ‘3’;
string19 [8] = ‘9’;
string19 [10] = ‘9’;
string19 [12] = ‘8’;
string19 [14] = ‘8’;
Номер байту |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
До переприсвоєння |
\xcb |
\34 |
\\ |
\xff |
h |
(sp) |
(sp) |
1 |
2 |
(sp) |
\4 |
Після переприсвоєння |
3 |
\34 |
1 |
\xff |
2 |
(sp) |
3 |
1 |
9 |
(sp) |
9 |
Код ASCII |
51 |
28 |
49 |
92 |
50 |
32 |
51 |
49 |
57 |
32 |
57 |
У 16 сч |
33 |
1C |
31 |
FF |
32 |
20 |
33 |
31 |
39 |
20 |
39 |
Номер байту |
11 |
12 |
13 |
14 |
15 |
16 |
До переприсвоєння |
d |
4 |
\\ |
\\ |
\n |
\0 |
Після переприсвоєння |
d |
8 |
\\ |
8 |
\n |
\0 |
Код ASCII |
100 |
56 |
92 |
56 |
10 |
00 |
У 16 сч |
64 |
38 |
5C |
38 |
0A |
0 |
Отже, в результаті пере присвоєння:
33 1C 31 FF 32 20 33 31 39 20 39 20 39 64 38 5C 38 0A16 + термінальний нуль 0016
ВПК(string19): 33 1C 31 FF 32 20 33 31 39 20 39 20 39 64 38 5C 38 0A 00 16