
- •Курсова робота з дисципліни «Програмування. Частина ііі. Структури даних та алгоритми»
- •Завдання на курсову роботу
- •Теоретична частина
- •1.1 Базові типи даних
- •1.1.1 Логічний тип даних
- •1.1.2 Символьні типи даних
- •1.1.3 Цілочисельні типи даних
- •1.1.4 Дійсні типи даних
- •1.2 Похідні типи даних
- •1.2.1 Тип даних «Рядок»
- •1.2.2 Тип даних «Перерахування» («Перелік»)
- •1.2.3 Тип даних «Масив»
- •1.2.4 Тип даних «Структура»
- •1.2.5 Тип даних «Об’єднання»
- •Система тестів
- •3.1 Базові типи даних
- •3.2 Похідні типи даних
- •3.2.1 Рядок символів
- •3.2.2 Переліки
- •3.2.3 Масив
- •3.2.4 Структура
- •3.2.5 Об’єднання
- •Результати виконання програми
- •Висновки
- •Додатки
3.2.5 Об’єднання
union un4 {
char a[14];
struct {
short d[5];
unsigned b;
float e;
};
int c;
} un;
un.e =44 171;
un.c = 118 800;
un.a[0] = ‘2’
un.a[1] = ‘8’
un.a[2] = ‘6’
un.a[3] = ‘4’
un.a[4] = ‘7’
Представлення кожної змінної об’єднання в пам’яті комп’ютера:
-
char a[8]
un.a[0] = ‘2’= 3216
un.a[1] = ‘8’= 3816
un.a[2] = ‘6’= 3616
un.a[3] = ‘4’= 3416
un.a[4] = ‘7’= 3716
Отже, масив у пам’яті комп’ютера виглядатиме:
ВПК :32 38 36 34 3716
-
int c = 118 80010 = 1 D0 1016 = 0001 1101 0000 0001 00002
В пам’яті комп’ютера змінна займає 2 байти: D0 1016 тільки у зворотньому порядку.
ВПК : 10 D016
-
Представлення дійсної змінної типу float : un.e =44 17110;
Назва типу |
Іденти-фікатор |
Діапазон значень |
Внутрішній формат: s–знак,e–експонента,m–мантиса |
Значення числа |
Розмір пам’яті в байтах |
|||||
Дійсне одинарної точності |
float |
від 3.4 до
3.4 |
1 біт 8 біт 23 біта
|
(-1)S |
4 |
Перевід цілої частини:
44 17110 =>AC 8B16
Нормалізація:
1010 1100 1000 10112
1.010 1100 1000 10112
Визначення мантиси: m=010 1100 1000 10112
Визначення зміщеного порядку: е = 12710 + 1510 = 14210 = 8E16 = 1000 11102
Визначення знакового розряду: s=0 (бо число додатнє).
Схема внутрішнього представлення:
Зборка за схемою:
s |
E |
M |
0 |
1000 1110 |
010 1100 1000 1011 0000 0000 |
0100 0111 0010 1100 1000 1011 0000 0000
В 16- ковій системі числення:
47 2C 8B 00
В пам’яті комп’ютера буде зберігатися у зворотному порядку розміщення байт числа:
00 8B 2C 47
Найдовший елемент даного об’єднання:
struct {
short d[5];
unsigned b;
float e;
}
Загальною довжиною в 20 байт, тобто об’єднання займає 20 байт в памяті комп’ютера.
Початкові данні об’єднання:
CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC СС CC CC CC CC
Перше присвоєння:
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx 00 8B 2C 47
Результат:
CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC 00 8B 2C 47
Друге присвоєння:
D0 10
Результат:
D0 10 CC CC CC CC CC CC CC CC CC CC CC CC CC CC 00 8B 2C 47
Третє присвоєння:
32 38 36 34 37
Результат:
32 38 36 34 37 CC CC CC CC CC CC CC CC CC CC CC 00 8B 2C 47
Відповідь : ВПК :
32 38 36 34 37 CC CC CC CC CC CC CC CC CC CC CC 00 8B 2C 47
-
Результати виконання програми
-
Висновки
Виконуючи цю розрахункову роботу я повторив, як визначити внутрішнє представлення цілих, дійсних, логічних та символьних чисел в пам’яті комп’ютера. Також я довідався багато нового про представлення в пам’яті комп’ютера рядків символів, перерахувань, масивів, структур та об’єднань.