Форми подання чисел в ЕОМ
Матеріал з ПІЕ.
Машинним зображенням числа називають його у розрядної сітці ЕОМ. У обчислювальних машинах застосовуються дві форми представлення чисел:
- природна форма або форма з фіксованою комою (точкою);
- нормальна форма або форма з плаваючою комою (точкою);
(природна форма) 452,34 = 452340 * 10 -3 = 0,0045234 * 10 5 = 0,45234 * 10 3 (нормальна форма)
Будь-яке десяткове число, перш ніж воно потрапляє в пам'ять комп'ютера, перетворюється за схемою:
Після цього здійснюється ще одна важлива процедура:
- мантіс з її знаком замінюється кодом мантиси з її знаком;
- Порядок числа з його знаком замінюється кодом порядку з його знаком.
Зазначені коди двійкових чисел - це образи чисел, які сприймають обчислювальні пристрої. Кожному двійковому числу можна поставити у відповідність кілька видів кодів.
Існують такі коди двійкових чисел:
- Прямий код;
- Зворотній код;
- Додатковий код.
Останні дві форми застосовуються особливо широко, оскільки дозволяють спростити конструкцію арифметико-логічного пристрою комп'ютера шляхом заміни різноманітних арифметичних операцій на операцію складання.
Зміст
Природна форма
У формі з фіксованою комою в розрядній сітці виділяється строго певне число розрядів для цілої та для дробової частин числа. Лівий (старший) розряд зберігає ознаку знака (0 – "+", 1 – "-") і для запису числа не використовується.
Сама кома ніяк не зображується, але її місце суворо фіксовано і враховується при виконанні всіх операцій із числами. Незалежно від положення коми в машину можна вводити будь-які числа, т.к.
де А –довільне число, [A] – машинне зображення числа розрядної сітці, K А - масштабний коефіцієнт.
Природна форма числа у неявному, умовному вигляді реалізується формулою:
тобто. число записується лише за допомогою набору значущих цифр x j без явного вказівки їх ваги і знаків складання між ними. Відлік ведеться від точки, яка зазвичай фіксується між цілою та дробовою частинами числа.
З фіксованою комою числа зображуються у вигляді послідовності цифр з постійним для всіх чисел положенням коми, що відокремлює цілу частину від дробової (наприклад, 32,54; 0,0036; -108,2). Форма подання чисел з фіксованою комою спрощує апаратну реалізацію ЕОМ, зменшує час виконання машинних операцій, проте при вирішенні завдань на машині необхідно постійно стежити за тим, щоб усі вихідні дані, проміжні та остаточні результати перебували у допустимому діапазоні подання. Якщо цього не дотримуватись, то можливе переповнення розрядної сітки, і результат обчислень буде неправильним. Від цих недоліків значною мірою вільні ЕОМ, що використовують форму подання чисел з плаваючою точкою, або нормальну форму. У сучасних комп'ютерах форма представлення чисел з фіксованою комою використовується лише цілих чисел.
Нормальна форма
З плаваючою комою (ПЛЗ) числа зображуються у вигляді:
де M - мантиса числа (правильний дріб у межах 0,1 ≤ M 2 , 0,36×10 -2 , –0,1082×10 3 ).
Нормалізований експоненційний запис числа- це запис видуa= m*P q, де q - ціле число (позитивне, негативне або нуль), а m - P-ічний дріб, у якого ціла частина складається з однієї цифри. При цьому m - мантиса числа, q - порядок числа.
Тобто нормальна форма реалізується формулою:
Нормальна форма уявлення має величезний діапазон чисел і є основним у сучасних ЕОМ.
При поданні чисел з плаваючою комою частина розрядів осередку відводиться запису порядку числа, інші розряди - для запису мантиси. По одному розряду в кожній групі приділяється зображення знака порядку і знака мантиси. Щоб не зберігати знак порядку, використовується так званийзміщений порядок, який розраховується за формулою 2 (a-1) + ІП, де a - кількість розрядів, що відводяться під порядок, ІП - істинний порядок.
У конкретній ЕОМ діапазон уявлення чисел з плаваючою комою залежить від основи системи та числа розрядів для подання порядку. При цьому у однакових по довжині форматів чисел з плаваючою комою зі збільшенням основи системи числення істотно розширюється діапазон чисел, що представляють. Точність обчислень під час використання формату з плаваючою комою визначається числом розрядів мантиси. Вона збільшується зі збільшенням числа розрядів.
Алгоритм подання числа з плаваючою комою:
- перевести число з p-їчної системи числення в двійкову;
- подати двійкове число в нормалізованій експоненційній формі;
- розрахувати зміщений порядок числа;
- розмістити знак, порядок та мантису у відповідні розряди сітки.
При поданні інформації у вигляді десяткових багаторозрядних чисел кожна десяткова цифра замінюється на двійково-десятковий код. Для прискорення обміну інформацією, економії пам'яті та зручності операцій над десятковими числами передбачаються спеціальні формати їх подання: зонний (розпакований) та упакований. Зонний формат використовується в операціях введення-операцій. Для цього в ЕОМ є спеціальнікоманди упаковки та розпакування десяткових чисел.
Прямий код
Подання числа у звичній формі "знак"-"величина", при якій старший розряд осередку відводиться під знак, а решта - під запис числа в двійковій системі, називаєтьсяпрямим кодомдвійкового числа. Наприклад, прямий код двійкових чисел 1001 і -1001 для 8-розрядного осередку дорівнює 00001001 і 10001001 відповідно.
Позитивні числа в ЕОМ завжди надаються за допомогою прямого коду. Прямий код числа повністю збігається із записом самого числа в комірці машини. Взагалі, позитивні числа у прямому, зворотному та додатковому кодах зображуються однаково – двійковими кодами з цифрою 0 у знаковому розряді.
Наприклад,
Прямий код від'ємного числа відрізняється від прямого коду відповідного додатного числа лише вмістом знакового розряду. Але негативні цілі числа не представляються в ЕОМ за допомогою прямого коду, для їхнього подання використовується так званий додатковий код.
Прямий код двійкового числа(а це або мантиса, або порядок)утворюється за таким алгоритмом:
- Визначити це двійкове число - воно або ціле (порядок), або правильний дріб (мантіса).
- Якщо це дріб, то цифри після коми можна як ціле число.
- Якщо це ціле і позитивне двійкове число, то разом з додаванням 0 старший розряд число перетворюється на код. Для негативного двійкового числа ним ставиться одиниця.
Наприклад,
Зворотній код
Зворотний код позитивного двійкового числа збігається з прямим кодом. Для негативного числа всі цифри числа замінюються на протилежні (1 на 0, 0 на 1), а знаковий розряд заноситься одиниця.
Наприклад,
Додатковий код
Додатковий код позитивного числа дорівнює прямому коду цього числа. Додатковий код від'ємного числа m дорівнює2 k- m, де k - кількість розрядів у комірці. Також додатковий код від'ємного числа утворюється шляхом додавання 1 до зворотного коду.
При поданні цілих чисел зі знаком старший (лівий) розряд відводиться під знак числа, і власне число залишається однією розряд менше.
Алгоритм отримання додаткового коду від'ємного числа:
- модуль від'ємного числа подати прямим кодом у k двійкових розрядах;
- значення всіх біт інвертувати: всі нулі замінити на одиниці, а одиниці на нулі (таким чином, # виходить k-розрядний зворотний код вихідного числа);
- до отриманого зворотного коду додати одиницю.
Додатковий код використовується для спрощення виконання арифметичних операцій. Якби обчислювальна машина працювала з прямими кодами позитивних і негативних чисел, то при виконанні арифметичних операцій слід виконувати ряд додаткових дій. Наприклад, при додаванні потрібно було б перевіряти знаки обох операндів і визначати знак результату. Якщо знаки однакові, то обчислюється сума операндів і їй надається той самий знак. Якщо знаки різні, то з більшого по абсолютній величині числа віднімається менше і результату надається знак більшого числа. Тобто при такому поданні чисел (у вигляді прямого коду) операція додавання реалізується через досить складний алгоритм. Якщо ж негативні числа представляти у вигляді додаткового коду, то операція додавання, в тому числі і різного знака, зводиться до порозрядного додавання.
Для комп'ютерного подання цілих чисел зазвичайвикористовується один, два або чотири байти, тобто осередок пам'яті складатиметься з восьми, шістнадцяти або тридцяти двох розрядів відповідно.
Наприклад,