Десяткові типи

 

Десяткові типи не підтримуються мовою PASCAL, але маються в деяких інших мовах, наприклад, COBOL, PL/1. Ці типи застосовуються для представлення таких даних, що у першу чергу повинні зберігатися в обчислювальній системі та видаватися користувачу за вимогою, і лише в другу чергу – оброблятися (служити операндами обчислювальних операцій). Невипадково ці типи вперше з'явилися в мові COBOL, орієнтованій на обробку економічної інформації: у більшості задач цієї сфери важливо насамперед зберігати і знаходити інформацію, а її перетворення виконується порівняно рідко і зводиться до найпростіших арифметичних операцій. Архітектура деяких обчислювальних систем (наприклад, ІBM System/390) передбачає команди, що працюють з десятковим представленням чисел, хоча ці команди і виконуються набагато повільніше, ніж команди двійкової арифметики. В інших архітектурах операції з десятковими числами моделюються програмно.

До десяткових типів відносяться: десятковий тип з фіксованою точкою та тип шаблона.

Десятковий тип з фіксованою точкою. У мові PL/1 десятковий тип з фіксованою точкою описується в програмі як:

DECІMAL FІXED (m,d) або DECІMAL FІXED (m).

Перший опис означає, що дані представляються у вигляді числа, що складається з m десяткових цифр, з яких d цифр розташовані після десяткової точки. Друге – ціле число зm десяткових цифр. Варто підкреслити, що в будь-якому випадку число десяткових цифр у числі фіксовано. У пам’яті комп’ютера представлення цілих чисел і чисел із дробовою частиною однакове. Для останніх положення десяткової точки запам'ятовується компілятором і враховується ним при трансляції операцій, у яких беруть участь десяткові числа з фіксованою точкою. Представлення чисел даного типу у пам’яті зветься десятковим упакованим форматом. Приклади представлення чисел 963 та – 1534 наведені на рис. 2.3.

мол. байт ст. байт

Число 963

 
  +

Число –2534

 

Рис. 2.3. Представлення чисел у десятковому упакованому форматі

 

Кожна десяткова цифра числа займає півбайта (4 розряди) і представляється в цьому напівбайті її двійковим кодом. Ще півбайта займає знак числа, що представляється двійковим кодом 1010 – знак "+" чи 1011 – знак "– ". Представлення займає ціле число байт і при необхідності доповнюється ведучим нулем.

Тип шаблона. Тип шаблона визначений у мові PL/1 і описується в програмі, як: PІCTURE '9...9'. Це означає, що дані представляють собою ціле число, що містить стільки цифр, скільки дев'яток зазначено в описі. Внутрімашинне представлення цього типу, так званий десятковий зонний формат, дуже близький до такого представлення даних, яке зручне користувачу: кожна десяткова цифра представляється байтом, що зберігає код символу відповідної цифри. В ІBM System/390, що апаратно підтримує зонний формат, застосовується символьний код EBCDІ. Приклади представлення чисел у зонному форматі наведені на рис. 2.4.

 

Число 963

+ 3

 

Число – 1534

– 4

 

Рис. 2.4. Представлення чисел у зонному форматі

 

В кодовій таблиці EBCDІ кожний символ представляється однобайтовим кодом. Код символу цифри містить у старшому півбайті код 1111, а в молодшому – двійковий код цифри числа. Знак не входить у загальне число цифр у числі. Для представлення знака в старшому півбайті останньої цифри числа код 1111 заміняється на 1010 – знак "+" або на 1011 для знака "– ".