- •Конспект лекцій ( частина і ) з дисципліни
- •1. Поняття інформації та основні форми її подання
- •2. Представлення даних в пам’яті комп'ютера
- •3. Класифікація типів даних
- •4. Базові типи даних
- •4.1. Порожній тип
- •4.2. Логічний тип даних
- •4.3. Символьні типи даних
- •4.4. Цілочисельні типи даних
- •4.5. Дійсні типи даних
- •5. Похідні типи даних
- •5.1. Переліки
- •5.2. Вказівники
- •5.3. Посилання
- •5.4. Масиви
- •5.5. Структури
- •5.6. Бітові поля
- •5.7. Об'єднання
- •6. Перетворення типів
- •6.1. Неявне перетворення типів
- •6.1.1. Арифметичне перетворення типів
- •6.1.2. Перетворення типів при присвоюванні
- •6.2. Явне перетворення типів
- •6.3. Застаріла форма явного перетворення
- •Список літератури
- •1. Поняття інформації та основні форми її подання ------------------------------------------- 3
- •Основи представлення данних в пам'яті комп'ютера
- •6.050102 “Комп’ютерна інженерія
5.7. Об'єднання
Об'єднання дуже схожі на структури. Однак на відміну від структури об'єднання зберігає значення тільки одного елемента в кожний момент часу. Інакше кажучи, коли виконується операція присвоювання значення елементу об'єднання, то перезаписується будь-яке попереднє присвоювання.
Головною особливістю об'єднання є те, що для кожного з оголошених елементів виділяється та сама область пам'яті, тобто вони перекриваються. Пам'ять, що відповідає змінній типу об'єднання, визначається величиною, необхідною для розміщення найбільш довгого елемента об'єднання. Коли використовується елемент меншої довжини, то змінна типу об'єднання може містити зайву пам'ять, що не використовується. Всі елементи об'єднання зберігаються в одній і тій cамій області пам'яті, починаючи з однієї адреси.
Приклад 12.
union {
char chx;
short kx;
float fx;
} u;
u . fx = 4.1;
u . kx = 123;
u . chx = 'K' ;
Визначимо представлення в пам'яті комп’ютера окремо кожного елемента об'єднання:
1). Представлення дійсної змінної типу float : u . fx = 4.1;
4,1 10 = 4,1(9) 16 = 0100 , 0001 (1001) 2
Нормалізація:
01, 00 0001 1001 1001 1001 1001 1001 * 20010
Мантиса:
m = 00 0001 1001 1001 1001 1001 1
Зміщений порядок:
е = 12710 + 210 = 129 10 = 81 16 = 1000 0001 2
Знак: s = 0
Зборка за схемою:
|
1біт |
8 біт |
23 біта |
|
s |
e |
m |
|
0 |
1000 0001 |
00 0001 1001 1001 1001 1001 1 |
В пам’яті комп’ютера буде зберігатися у зворотному порядку розміщення байт числа.
Результат в 16- ковій системі числення: 33 33 83 40
2). Представлення короткого цілого числа типу short : u.kx = 123;
Д
одатнє
число 123 типу short
в пам'яті комп’ютера зберігається
в прямому двійковому коді і займає 2
байта: 12310
= 7B16
= 0111 1011 2
0000 0000 0111 1011
В пам’яті комп’ютера цілі числа зберігаються у зворотному порядку розміщення байт числа:
0111 1011 0000 0000
Результат в 16-ковій системі числення: 7B 00
3). Представлення символьної змінної типу char : u . chx = 'K' ;
За системою ASCIІ: символ ’9’ має порядковий номер 7510 = 4B16 = 0001 10112
Отже, цей символ в пам’яті комп’ютера буде представлений як послідовність 0001 1011.
В 16-ковій системі числення: 4B
Величиною, необхідною для розміщення найбільш довгого елемента об'єднання є змінна типу float, під яку виділяється 4 байта.
Після виконання першої операції присвоєння u . fx = 4.1 в цих 4 байтах пам’яті в 16- ковій системі числення буде записана така послідовність: 33 33 83 40
Після виконання другої операції присвоєння u . kx = 123 перші 2 байта пам’яті будуть переписані і в результаті в пам’яті в 16- ковій системі числення буде записана така послідовність: 7B 00 83 40
Після виконання третьої операції присвоєння u . chx = 'K' перший байт пам’яті буде переписаний і в результаті в пам’яті в 16- ковій системі числення буде записана така послідовність: 4B 00 83 40
В результаті, об'єднання в пам’яті комп’ютера буде зберігатись у 4 байтах в такому вигляді:
4B 00 83 40
