Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Консп_лекцій_Частина_1. Основи представлення с.doc
Скачиваний:
9
Добавлен:
06.11.2018
Размер:
839.68 Кб
Скачать

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