Представлення цілих чи реальних чисел - 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 у шістнадцятковій)