Державний заклад “Київський коледж зв’язку”
СХВАЛЕНО Затверджую
на засіданні циклової комісії Заступник директора
комп’ютерних систем та мереж з навчально - виробничої роботи
протокол № _____
від"____"_______________2008р. ______________ О.Ю. Коновалов
Голова_________ А.Ю.Лойкова "____"__________________2008р.
МЕТОДИЧНІ ВКАЗІВКИ
ПО ВИКОНАННЮ
ЛАБОРАТОРНОЇ РОБОТИ №3
З ПРЕДМЕТУ
„СИСТЕМНЕ ПРОГРАМУВАННЯ”
для студентів вищих навчальних закладів,
які навчаються за
освітньо-кваліфікаційним рівнем „бакалавр”
з напрямку 6.050102 – „Комп’ютерна інженерія ”
Розробив викладач
Довженко П.В.
_____________________________
"_____"_________________2008р.
Київ – 2008
Тема: Формат представлення базових даних.
Мета завдання.
Поглибити знання про формат представлення базових даних.
Прилади та обладнання.
ЕОМ типу IBM PC, система програмування Асемблер.
Теоретичні відомості.
Персональний комп'ютер (ПК) оперує з більшою кількістю найрізноманітніших даних, що мають певний формат, обумовлений розміром комірки (кількість біт), де дане зберігається, і способом його подання. Формати припустимих даних залежать від моделі персонального комп'ютера й від набору команд для їхньої обробки. Для початку ми розберемося з базовим набором даних і команд — набором для IBM PC XT (процесори Intel8088/8086). Цей набір прийнятий за замовчуванням, незалежно від моделі ПК. Набір форматів даних для інших моделей від базового нічим не відрізняється, додані тільки деякі команди. Цей базовий набір утворить так звану платформу Winl6, що забезпечує 16-розрядне програмування. Зрозумівши базовий принцип організації даних, ми легко зрозуміємо й подальші розширення форматів даних і команд для i386, i486, i586 і сумісних з ними моделей ПК, що забезпечують роботу в Win32.
Будь-яка величина, видима програмі, має тип і повинна бути відповідним чином представлена й описана. Займемося для початку простими типами даних: символи, цілі й дійсні числа. В алгоритмічних мовах, таких, як Pascal або C/C++, вони описуються за допомогою відповідних ключових слів.
Як правило, у завданні завжди відомий діапазон вхідних даних (область визначення). Діапазон результуючих даних відомий далеко не завжди. Тому звичайно вважають, що такі дані повинні мати максимально припустимий діапазон значень. При цьому потрібно враховувати, що дані більш довгі вимагають і більше пам'яті .
Цілі числа без знака
Як видно з області припустимих значень для платформи Wînl6, цілі числа без знака — це ПОЗИТИВНІ числа (або НУЛЬ) і вони можуть займати 8, 16 або 32 біта пам'яті ЕОМ. Вважається, що біт 0 — молодший біт (для зручності будемо вважати, що він розташований крайнім ПРАВОРУЧ). Старший біт — 7(15 або 31) — для зручності розташуємо крайнім ЛІВОРУЧ. Для БЕЗЗНАКОВИХ даних всі біти вважаються інформаційними.
Рис. 1. Формат подання для 32-бітного БЕЗЗНАКОВОГО числа.
ПРИКЛАД 1.
Нехай є десяткове ціле число 40000. У якому форматі його можна представити? Тобто скільки йому потрібно біт і яке буде його внутрішнє (машинне) подання?
Рішення. Для початку потрібно перевести це число у двійкову систему числення. Одержуємо:
40000d → 1001 1100 0100 0000b → 9C40h
По кількості отриманих біт видно, що для зберігання такого числа нам знадобиться мінімум 16 двійкових розрядів. У термінах алгоритмічної мови C/C++ це формат unsigned int для платформи Winl6, а для Pascal - це формат word.
Можна це число (із запасом) розмістити й в 32-х бітах:
40000d → 0000 0000 0000 0000 1001 1100 0100 0000b → 00009С40Н
Зверніть увагу на провідні НУЛІ!!!
Це будуть для C/C++ відповідно, формати: unsigned long, long або unsigned int, int, unsigned long, long. Для Pascal - це формати: Longlnt або Integer, Longlnt, LongWord, Cardinal .
Цілі числа зі знаком
Цілі ЗНАКОВІ дані, по-перше, можуть бути як ПОЗИТИВНИМИ, так і НЕГАТИВНИМИ, включаючи НУЛЬ, і, по-друге, вони по діапазону припустимих значень у два рази менше беззнакових (для позитивних значень).
Це відбувається, тому що НЕ вся область біт приділяється під інформацію, як було з беззнаковими даними. Старший біт завжди приділяється під знак. Він називається біт S - Signum (знак - лат.):
S = 0 - для ПОЗИТИВНИХ чисел;
S = 1 - для НЕГАТИВНИХ чисел.
Рис. 2. Формат подання для 32-бітного знакового числа.
Тому під інформацію приділяється завжди на ОДИН біт МЕНШЕ.
ПРИКЛАД 2.
Нехай є десяткове число -1607. У якому форматі його можна представити? Тобто скільки йому потрібно біт і яке буде його внутрішнє (машинне) подання?
Рішення. Наше число НЕГАТИВНЕ, виходить, його потрібно представити в ДОДАТКОВОМУ коді:
1) |-1607|= 1607.
Таким чином, одержуємо число 647h → 0110 0100 0111b.
Тобто нашому числу досить 12 біт. Але такого формату немає, тому беремо, наприклад, 16 біт, додаючи провідні нулі: 0000 0110 0100 011 lb
2)Робимо інверсію нашого коду: 0000 0110 0100 0111b
Одержуємо: 1111 1001 1011 1000b
3) До отриманого hex-коду додаємо 1
Одержуємо: 1111 1001 1011 1001b
Це і є машинне подання нашого числа -1607 або в шістнадцятковій системі числення: F9B9h. У пам'яті комп'ютера це число буде зберігатися задом-наперед, тобто B9F9h.
Дійсні числа
Дійсні базові величини можуть бути типу float (single), double або long double (extended). Як видно, від платформи вони НЕ залежать. Ці дійсні числа обробляє співпроцесор. Внутрішнє (машинне) подання цих чисел досить складне:
Рис.3. Формат дійсного числа
Біт S - як звичайно, знак числа.
Характеристика = Зсув ± Порядок
Зсув - число, рівне ПОЛОВИНІ максимально можливого, котре може поміститися в полі Характеристика. Таким чином, заощаджуються місце й час, тому що НЕ потрібно виділяти розряд для знака порядку й робити додатковий код для негативних порядків.
Розмір простору, що ПК використовує для зберігання Характеристики й Мантиси, установлений стандартом IEEE 724-1985 standard for floating point numbers і підтримується всіма сучасними комп'ютерними архитектурами.
Для одержання внутрішнього подання дійсного числа потрібно кожного разу переводити його у двійковий формат.