Представлення цілих чи реальних чисел - CCM
Представлення числа в комп’ютері
Спосіб його опису в двійковій формі називається поданням (або кодифікацією) числа. Представлення чисел на комп’ютері має важливе значення, щоб він міг зберігати їх і маніпулювати ними. Однак проблема полягає в тому, що математичне число може бути нескінченним (скільки завгодно великим), але подання числа в комп'ютері повинно здійснюватися на заздалегідь визначену кількість бітів. Отже, мова йде про попереднє визначення кількості бітів та способу їх використання, щоб вони використовувались якомога ефективніше для представлення сутності. Тож було б глупо кодувати 16-бітний символ (65536 можливостей), коли ми, як правило, використовуємо менше 256.

Представлення натурального числа
Натуральне ціле число - це додатне або нульове ціле число. Вибір, який потрібно зробити (тобто кількість розрядів, які слід використовувати), залежить від діапазону чисел, які ви хочете використовувати. Для кодування натуральних чисел від 0 до 255 нам знадобиться 8 бітів (один байт), оскільки 2 ^ 8 = 256. Загалом, кодування на ні біти зможуть представляти натуральні цілі числа від 0 до 2 ^ n-1.
Щоб представити натуральне число після того, як визначили кількість бітів, на яких воно кодується, все, що вам потрібно зробити, це зберегти кожен біт у двійковій комірці, що відповідає його двійковій масі справа наліво, а потім "заповнити" невикористані біти нулі.
Представлення відносного цілого числа
Відносне ціле число - це ціле число, яке може бути від’ємним. Отже, ми повинні закодувати число таким чином, щоб ми могли знати, чи є це позитивним чи негативним числом, а також необхідно, щоб правила додавання дотримувалися. Фокус полягає у використанні кодування, яке викликається доповнення двох.
- додатне або нульове відносне ціле число буде представлено у двійковому вигляді (основа 2) як натуральне ціле число, з тією лише різницею, що найбільш значущий біт (біт, розташований вкрай ліворуч) представляє знак. Тому необхідно переконатись, що для додатного чи нульового цілого числа воно дорівнює нулю (0 відповідає позитивному знаку, 1 - негативному). Отже, якщо ми закодуємо натуральне ціле число понад 4 біти, найбільшим числом буде 0111 (тобто 7 у десятковій основі).
Загалом, найбільше додатне відносне ціле число, кодоване на ні біти будуть 2 ^ n-1-1.
- від'ємне відносне ціле число завдяки додатковому кодуванню двох.
Принцип доповнення двох:
Або представляти від’ємне число.
*
- Візьмемо його протилежність (еквівалент у позитиві)
- Він представлений в основі 2 на n-1 бітах
- Ми доповнюємо кожен біт (ми повертаємо назад, тобто замінюємо нулі на 1s і навпаки)
- Додаємо 1
Зверніть увагу, що додаючи число та доповнення його двох, ми отримуємо 0.
Тепер давайте розберемо це на прикладі:
Ми хочемо закодувати значення -5 на 8 бітів. Достатньо:
- запишіть 5 у двійковій формі: 00000101
- доповнити 1: 11111010
- додайте 1: 11111011
- двійкове представлення -5 над 8 бітами - 11111011
Найбільш значущий біт - 1, тому маємо від’ємне число.
Якщо додати 5 і -5 (00000101 та 11111011), ми отримаємо 0 (з перенесенням 1).
Представлення дійсного числа
Це передбачає подання двійкового числа з крапкою (наприклад 101.01 який не читає сто один пункт нуль один оскільки це двійкове число, але 5.25 у десятковій формі) у вигляді 1, XXXXX. * 2 ^ n (тобто в нашому прикладі 1,0101 * 2 ^ 2). Стандартний IEEE визначає спосіб кодування дійсного числа.
Цей стандарт пропонує кодувати число в 32 біти і визначає три компоненти:
- знак представлений одним бітом, найбільш значущим бітом (найвіддаленішим ліворуч)
- показник показника кодується на 8 бітах, послідовних знаку
- мантиса (біти, розташовані після коми) на 23 бітах, що залишилися
Таким чином, кодування здійснюється у такій формі:
seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm
- представляє біт щодо знака
- e представляють біти щодо показника ступеня
- м представляють біти, що відносяться до мантиси
Однак для експонентів повинні дотримуватися певні умови:
- показник 00000000 заборонено
- виставка 11111111 заборонена. Однак він використовується для сигналізації про помилки, тому ми називаємо цю конфігурацію номера Ні, що означає Не число
- Ви повинні додати 127 (01111111) до показника ступеня для перетворення десяткового в двійкове дійсне число. Таким чином, експоненти можуть коливатися від -254 до 255
Формула вираження дійсних чисел така:
або:
- S - знаковий біт, і тоді ми розуміємо, чому 0 додатне (-1 ^ 0 = 1).
- E - показник ступеня, до якого ми повинні додати 127, щоб отримати його закодований еквівалент.
- F - дробова частина, єдина, яка виражається і яка додається до 1 для виконання розрахунку.
Давайте розглянемо це кодування на прикладі:
Або закодувати значення 525,5.
- 525,5 є позитивним, тому 1-й біт буде 0.
- Його представлення в базі 2 таке: 1000001101,1
- Нормуючи, ми знаходимо: 1.0000011011 * 2 ^ 9
- Ми додаємо 127 до показника ступеня, який дорівнює 9, що дає 136, тобто в основі 2: 10001000
- Мантиса складається з десяткової частини 525,5 у стандартизованій основі 2, тобто 0000011011.
- Оскільки мантиса повинна займати 23 біти, для її заповнення необхідно додати нулі:
00000110110000000000000
- Отже, число 525,5 у двійковому вигляді зі стандартом IEEE є таким:
0 1000 1000 00000110110000000000000
0100 0100 0000 0011 0110 0000 0000 0000 (4403600 у шістнадцятковій)
Ось ще один приклад із реальним негативом:
Або кодувати значення -0,625.
- Біт s дорівнює 1, оскільки 0,625 від’ємне
- 0,625 записано в базі 2 так: 0,101
- Ми хочемо записати його у формі 1,01 х 2-1
- Отже, показник ступеня дорівнює 1111110, тому що 127 - 1 = 126 (або 1111110 у двійковому вигляді)
- мантиса - 01000000000000000000000 (відображаються лише цифри після десяткової коми, все число завжди дорівнює 1)
- Подання числа 0,625 у двійковому вигляді за стандартом IEEE:
1 1111 1110 01000000000000000000000
1111 1111 0010 0000 0000 0000 0000 0000 (FF 20 00 00 у шістнадцятковій)