ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6782
Скачиваний: 22
72
нарною точністю та 3777 для числа з подвійною точністю) та нульовою мантисою. Для представлення невизначеного значення також використовується максимальне значення порядку та ненульова мантиса. Невизначене значення називають "не числом" - Not a Number (NaN). "He число" використовується, щоб представити значення, яке не є дійсним числом і часто використовується як індикатор помилки, наприклад, коли відбулося ділення 0 на 0. Якщо число є дуже малим, то воно представляється нульовим порядком та ненульовою мантисою. У табл. 2.7 наведено приклади представлення різних величин в форматі за стандартом ІЕЕЕ-754 для чисел з одинарною та подвійною точністю.
|
|
|
|
|
|
Таблиця 2.7 |
|
|
32-розрядні числа |
|
64-розрядні числа |
||
Приклади |
Знак |
Порядок |
Мантиса |
Знак |
Порядок |
Мантиса |
NaN |
? |
3778 |
Не нуль |
0 |
37778 |
Не нуль |
+ нескінченість |
0 |
3778 |
.000000008 |
0 |
37778 |
.0000000000000000008 |
10,0 |
0 |
2028 |
(1).200000008 |
0 |
20028 |
(1).0400000000000000008 |
1,0 |
0 |
1778 |
(1).000000008 |
0 |
17778 |
(1).0000000000000000008 |
0,0 |
0 |
0008 |
.оооооооо8 |
0 |
оооо8 |
.0000000000000000008 |
Ненормалізоване |
0 |
ооо8 |
Не нуль |
0 |
оооо8 |
Не нуль |
-0,0 |
1 |
ооо8 |
.000000008 |
0 |
оооо8 |
.0000000000000000008 |
-1,0 |
1 |
1778 |
(1).000000008 |
1 |
17778 |
(1).0000000000000000008 |
-10,0 |
1 |
2028 |
(1).200000008 |
1 |
20028 |
(1).0400000000000000008 |
- нескінченість |
1 |
3778 |
.оооооооо8 |
1 |
37778 |
.0000000000000000008 |
Тут знаком ? позначено несуттєве значення, а (1) - значення, яке не зафіксовується елементами пам'яті комп'ютера.
2.6.5. Кодування алфавітно-цифрової інформації
2.6.5.7. Двійково-кодовані десяткові числа
Вище було показано представлення в комп'ютері даних у двійковій системі числення. Далі розглянемо, як ці внутрішні дані можуть бути перетворені у форму, яка піддається інтерпретації людиною.
Двійково-кодоване десяткове число - це десяткове число, кожна цифра якого представлена в двійковій формі. Одна з перших числова система кодування десяткових чисел двійковим кодом (Binary-coded decimal - BCD) була використана в великих і середнього розміру комп'ютерних системах фірми IBM. Система BCD кодує кожну цифру десяткового числа 4-розрядним двійковим кодом. Коли використовується 8-розрядне число, тобто байт, то старші 4 біти називають зоною, а молодші - цифрою. Ця домовленість прийшла з часів перфокарт, де кожна колонка карти могла мати "зональний отвір" в одній з двох верхніх стрічок і "цифровий отвір" в одній з десяти нижніх стрічок. Старші чотири розряди в байті BCD використовуються для представлення знаку, який може мати одне з трьох значень: число без знаку представляється кодом 1111; додатне число
73
представляється кодом 1100; від'ємне число представляється кодом 1101. Кодування для двійково-кодованих десяткових чисел показане в табл. 2.8.
|
|
Таблиця 2.8 |
Цифра |
Код BCD |
|
0 |
0000 |
|
1 |
0001 |
|
2 |
0010 |
|
3 |
0011 |
|
4 |
0100 |
|
5 |
0101 |
|
6 |
0110 |
|
7 |
0111 |
|
8 |
1000 |
|
9 |
1001 |
|
Зони |
|
|
1111 |
Без знаку |
|
1100 |
Додатне |
|
1101 |
Від'ємне |
|
Як видно з таблиці, шість можливих двійкових значень (від 1010 до 1111) не використовуються. Хоча втрачається приблизно 40 % можливих значень, але набуваються значні переваги в точності. Наприклад, десяткове число 0.3, перетворене в двійковий код та обмежене 8-розрядною сіткою, при зворотному перетворенні має значення 0.296875, тобто похибка складає приблизно 1.05 %. В коді BCD число запам'ятається безпосередньо як 1111 0011, не допускаючи жодної помилки.
Цифри в коді BCD займають лише чотири розряди, тому можна зберегти місце і спростити обчислення, розмістивши поряд числа з одним знаком. Цей процес називається пакуванням, а сформовані числа - пакованими десятковими числами.
Приклад:
Подамо число -1265 трьома байтами, використовуючи паковані цифри коду BCD.
Зонне десяткове кодування для числа 1265 є наступним:
11110001 11110010 11110110 11110101
Після пакування отримаємо:
00010010 0110 0101
Додавши знак після цифри молодшого розряду і заповнивши цифру старшого розряду одиницями до 3 байтів, отримаємо:
111100010010 0110 0101 1101.
Код BCD (або його іще називають кодом 8421) знайшов найбільше поширення в обчислювальній техніці. Цей код зручний для виконання перетворення з десяткової системи у двійкову і навпаки. Цей код адитивний, тобто сума представлення двох цифр є кодом їх суми.
Разом з тим, використання цього коду пов'язане з труднощами пошуку переносу в наступний десятковий розряд і важкістю переходу до оберненого та доповняльного коду для десяткових чисел. Це пояснюється тим, що код 8421 не є самодоповнюючим, тобто
74
інверсія його двійкових цифр не дає коду доповнення десяткової цифри до 9. В табл. 2.9 наведено інші широко вживані двійково-десяткові коди, а саме код з надлишком 3 та код 2 з 5. Можна побудувати й інші двійково-десяткові коди, наприклад 2421, 5121 тощо.
|
|
|
Таблиця 2.9 |
Десяткові цифри |
Код 2 з 5 надлишком 3 |
Код 2 з 5 |
|
0 |
0011 |
11 000 |
|
1 |
0100 |
00 011 |
|
2 |
0101 |
00 101 |
|
3 |
0110 |
00 11О |
|
4 |
0111 |
01 001 |
|
5 |
1000 |
01 010 |
|
6 |
1001 |
01 100 |
|
7 |
1010 |
10 001 |
|
8 |
1011 |
01 001 |
|
9 |
1100 |
10 100 |
|
Код з надлишком 3 зручний при виконанні арифметичних операцій над десятковими цифрами, оскільки він є самодоповнюючим. Крім того, легко визначається перенос, так як сума двох доданків, кожне з яких береться з надлишком 3, вийде з надлишком 6, що виключає лишні кодові комбінації. Для отримання правильного коду суми з отриманого результату відкидається 3. У деяких випадках для використання суттєво, що код нуля містить 1 і тому легко відрізнити наявність коду нуля від пропадання коду цифри. Код з надлишком 3 не дуже зручний для перетворення чисел з однієї системи числення в іншу. В коді 2 з 5 десяткові цифри зображаються п'ятьма розрядами, причому кожне значення містить дві 1. Ця надлишковість використовується для контролю правильності передачі цифри. Будь-яка помилка в одному розряді перетворює 0 в 1 або 1 в 0, в результаті вийде більше або менше двох 1, що вкаже на помилку. При одночасній появі двох помилок можливі випадки, коли їх можна не знайти (якщо 0 в одному розряді перетворюється в 1, а в іншому розряді 1 в 0).
2.6.4.2. Розширений двійково-кодований десятковий код обміну EBCDIC
Перед розробкою комп'ютерної системи IBM System/360, фірма IBM використала 6-розрядну версію двійково-кодованого десяткового числа для представлення символів і знаків. Цей код мав суттєві обмеження, пов'язані з малою розрядністю двійково-кодованого десяткового числа. Проектувальникам System/360 була потрібна більша інформаційна здатність коду так само як і узагальнений метод запам'ятовування і чисел, і символів. Для того, щоб підтримувати сумісність з попередніми комп'ютерами і периферійним устаткуванням, інженери IBM вирішили, що буде краще просто розширити код BCD від 6 бітів до 8 бітів. Відповідно, цей новий код було названо розширеним двійково-кодованим десятковим кодом обміну (EBCDIC). Фірма IBM і тепер продовжує використовувати код EBCDIC в мейнфреймах і обчислювальних системах середнього розміру. В табл. 2.10 код EBCDIC показано в зонально-цифровій формі.
75
Знаки представлені шляхом додавання бітів до зонних бітів. Наприклад, знаку а відповідає код 1000 0001, а цифрі 3 - код 1111 0011. Зауважимо, що єдина різниця між верхніми і нижніми символами полягає в позиції розряду 2, що дозволяє зробити перетворення від верхніх до нижніх символів (або навпаки) шляхом переключення одного двійкового розряду. Зональні біти також роблять легшою для програміста перевірку правильності вхідних даних. Розшифрування абревіатур з табл. 2. 10 наведено в табл. 2.11.
2.6.4.3 Американський стандартний код інформаційного обміну ASCII
Американський стандартний код інформаційного обміну (American Standard Code for Information Interchange (ASCII)) з'явився завдяки зусиллям розробників покращити засоби передачі даних між системами. Міжнародна організація стандартизації ISO запропонувала цей 7-розрядний код взамін 5-розрядного коду, який використовувався в телетайпах.
Код ASCII визначає коди для 32 символів керування, 10 цифр, 52 букв, 32 спеціальних символів (таких як $ та #), а також для символу інтервалу (табл. 2.12). Старший восьмий біт було введено для забезпечення перевірки на парність. Цей біт дозволяє виявля-
76
Розшифрування абревіатур з табл. 2.12 наведено в табл. 2.13.
ти однократні помилки при передачі даних. Тут значення записані в десятковій системі числення.
З підвищенням надійності комп'ютерної техніки важливість біта парності знизилась, тому на початку 80-х років його стали використовувати для розширення набору кодованих символів в межах від 12810 до 25510 . Це хможуть бути, наприклад, математичні символи, або символи іноземних мов.
2.6.4.4. Стандарт кодування символів Unicode
Коди EBCDIC та ASCII забезпечили кодування букв латинського алфавіту. З метою забезпечення кодування букв інших алфавітів та підтримки мов народів світу в 1991 році було запропоновано код під назвою Unicode.