Вступ, біти, байти, BCD, ASCII, символи, рядки, цілі числа та плаваюча крапка

Довідкова література:

біти

  • Дизайн програми: P Juliff
  • Мова асамблеї мікрокомп'ютерів IBM: J Godfrey
  • Програмісти Craft: R Weiland
  • Зберігання даних у комп’ютері: CIT
  • Дизайн мікропроцесорного програмного забезпечення: S Campbell

СТРУКТУРИ ДАНИХ
Подібно до того, як важливо навчитися розробляти програми, так само важливо розуміння правильного формату та використання даних. Усі програми використовують певну форму даних. Для розробки програм, які працюють коректно, потрібно добре розуміти структуру даних.

Цей модуль знайомить вас з різними формами даних, що використовуються програмами. Ми дослідимо, як дані зберігаються, доступ до них та їх типове використання в програмах.

Комп’ютер зберігає інформацію у бінарному форматі. Двійкова система - це система числення, яка використовує BITS для зберігання даних.

БІТИ
Біт - це найменший елемент інформації, що використовується комп’ютером. Біт містить ОДНО з ДВОХ можливих значень,

Біт, який вимкнений, також вважається ФАЛЬШИМ або НЕ ВСТАНОВЛЕНИМ; біт, який увімкнено, також вважається TRUE або SET.

Оскільки один біт може зберігати лише два значення, біти об'єднуються разом у великі одиниці, щоб утримувати більший діапазон значень.

НІБЛІ
Нагризок - це група ЧОТИРИх бітів. Це дає максимум 16 можливих різних значень.

При роботі з групами бітів корисно визначити, який біт групи має найменше значення, а який біт має найбільше або найбільше значення.

Найменший значущий біт І найзначніший біт
Це вважається бітом 0 і завжди малюється в крайньому правому куті. Найзначніший біт завжди відображається вкрай ліворуч, і це біт з найбільшим значенням.

На діаграмі нижче показано НІБЛЕ, а також положення кожного біта та значення десяткової ваги (для отримання додаткової інформації зверніться до модуля Числових систем).

Давайте розглянемо приклад перетворення двійкових значень у десяткові.

Щоб отримати додаткові приклади, зверніться до модуля Числові системи.

БАЙТІВ
Байти - це група з 8 бітів. Це включає ДВА гризки, як показано нижче.

Байти часто використовуються для зберігання ХАРАКТЕРІВ. Вони також можуть використовуватися для зберігання числових значень,

Двійкове кодоване десяткове [BCD]
Десяткові цифри двійкового коду (0-9) представлені з використанням ЧЕТИРИХ бітів. Дійсні комбінації бітів та їх відповідні значення

Бінарне значення Цифра
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9

Двійкові комбінації з 1010 по 1111 недійсні і не використовуються.

Якщо комп'ютер зберігає одну цифру BCD на байт, це називається звичайною BCD. Невикористаним клюванням можуть бути або всі 0, або всі 1.

Якщо в байті зберігаються дві цифри BCD, він називається Упакований BCD. Це відбувається при передачі даних, де номери передаються по лінії зв'язку. Упакований BCD зменшує час, витрачений на передачу цифр, оскільки кожен переданий байт даних призводить до відправки двох цифр BCD.

Розгляньте можливість зберігання цифр 56 у форматі упакованої BCD.

ВИСОКИЙ верхній вміщує значення 5, тоді як ВНИЗ - 6.

Статусні та логічні змінні
Змінні BOOLEAN використовують один біт, щоб утримувати своє значення, тому можуть приймати лише один із двох можливих станів. Це або 0 (вважається НЕВИЩИМ), або 1 (вважається ІСТИНОЮ).

Комп’ютер обробляє кожну логічну змінну як один біт. Якщо біт має значення TRUE, тоді значення має значення 1. Якщо біт FALSE, то він має значення 0.

Коли група бітів групується разом, щоб утворити обмежений діапазон значень, це відомо як СТАТУС змінна.

Розглянемо випадок у програмі, де нам потрібно відстежувати кількість хвилин, на яких зайнята телефонна лінія (в обмеженому діапазоні від 0 до 60). Для цього не потрібно використовувати повне ціле число, тому деякі мови програмування дозволяють вказати кількість бітів, що використовуються для виділення змінних з обмеженими діапазонами.

Перевага цього підходу полягає в тому, що простір для зберігання змінних стану можна об'єднати разом в єдині 16 або 32 біти, що призводить до економії місця.

Поміркуйте, де комп’ютер виділяє 16 біт пам’яті для кожної змінної стану. Якби ми мали три змінні стану, спожитий простір становив би 48 бітів. АЛЕ, якби всі змінні стану могли бути об'єднані та розміщені в єдиному 16 бітах пам'яті, ми могли б зберегти 32 біта пам'яті. Це дуже важливо в системах реального часу, де простір пам'яті має високу ціну.

Розглянемо наступну діаграму, яка ілюструє упаковку булевих змінних та змінних стану в один байт.

Американський стандартний кодекс обміну інформацією
ASCII - це комп'ютерний код, який використовує 128 різних комбінацій кодування групи із семи бітів (27 = 128) для представлення,

Комп’ютер зазвичай зберігає інформацію у восьми бітах. Восьмий біт не використовується в ASCII, тому, як правило, встановлюється на 0. Деякі системи можуть використовувати восьми біт для реалізації графіки або символів різних мов, тобто грецьких символів.

Контрольні коди використовуються у зв'язку та принтерах. Вони можуть бути сформовані з клавіатури ASCII, утримуючи клавішу CTRL (клавіша управління) та натискання іншої клавіші (від A до Z, плюс

ХАРАКТЕРИ
Символи - це нецифрові символи, що використовуються для передачі мови та значення. В англійській мові їх поєднують з іншими символами, утворюючи слова. Прикладами символів є;

Комп’ютерна система зазвичай зберігає символи з використанням коду ASCII. Кожен символ зберігається з використанням восьми бітів інформації, що дає загальну кількість 256 різних символів (2 ** 8 = 256).

У мові високого рівня Pascal символи визначаються та використовуються наступним чином,

Змінні, що використовуються в програмі Pascal, оголошуються після ключового слова змінний. У наведеному вище прикладі оголошено змінну плюс_символ бути типом символів, таким чином виділяється вісім бітів пам'яті для зберігання його значення (ще не визначеного).

Усередині основної частини програми, після ключового слова почати, показане твердження присвоює символ + до символьної змінної плюс_символ. Це еквівалентно збереженню шістнадцяткового значення ASCII 2B у восьми бітах пам'яті, призначених змінній плюс_символ.

ТЕКСТОВІ СТРУНГИ
Текстові рядки - це послідовність символів (тобто слів або багатосимвольних символів). Кожен символ зберігається один за одним, кожен займає вісім бітів пам'яті.

Текстовий рядок Здравствуйте буде зберігатися наступним чином

У Turbo Pascal текстові рядки визначаються та використовуються наступним чином,

У наведеному вище прикладі змінну text_message оголошено типом рядка довжиною до 22 символів (але не більше!). Вісім бітів пам'яті виділено для зберігання кожного символу в рядку (загалом 22 байти), при цьому значення в кожному байті ще не визначене.

Усередині основної частини програми, після початку ключового слова, показаний вираз присвоює повідомлення Ласкаво просимо до текстових рядків до рядкової змінної текстове повідомлення. Це зберігає значення ASCII кожного символу в кожному послідовному байті пам'яті, виділеному для змінної текстове повідомлення.

ЦІЛІ
Числову інформацію не можна ефективно зберігати за допомогою формату ASCII. Уявіть, як ви зберігаєте номер 123 769 за допомогою ASCII. Це зайняло б 6 байт, і важко було б визначити, чи число було позитивним чи негативним (хоча ми могли б перед цим ставити символ + або -).

Більш ефективним способом зберігання числової інформації є використання іншої схеми кодування. Схема кодування в більшості випадків наведена нижче,

Цілі числа зберігають лише цілі числа! Вони не містять дробових частин. Розглянемо приклади нижче,

Знаковий біт (а це біт 15) вказує, чи є число позитивним чи негативним. Логіка 1 вказує на негатив, логіка 0 означає позитив.

Число перетворюється в двійкове і зберігається в бітах від 0 до 14 з двох байт.

При зберіганні від’ємних чисел число зберігається із використанням формату доповнення двох.

У мові Паскаль цілі числа визначаються та використовуються наступним чином,

Приклад оголошує змінну ціле число бути цілочисельним типом, таким чином для зберігання його значення виділяється шістнадцять бітів пам’яті (поки невизначеного).

Усередині основної частини програми, після ключового слова почати, показаний вираз присвоює числовому значенню 1267 цілу змінну ціле число. Це еквівалентно збереженню бітової комбінації 0000010011110011 у шістнадцяти бітах пам'яті, виділених змінній ціле число.

Цілі числа зі знаком, що використовують 16 бітів, мають діапазон чисел,

Для зберігання більших цілих значень знадобиться більше бітів. Деякі системи та мови також підтримують використання цілих чисел без знака, які вважаються лише позитивними.

НОМЕРИ ПЛАВАЮЧИХ ТОЧК
Є дві проблеми з цілими числами; вони не можуть виражати дроби, а діапазон числа обмежений кількістю використовуваних бітів. Ефективним способом зберігання фракцій називається метод з плаваючою точкою, який передбачає розбиття фракції на дві частини, показник степеня та мантису.

Експонента представляє значення, підняте в ступінь 2.

Мантиса представляє дробове значення від 0 до 1.

Розгляньте число

Номер спочатку перетворюється у формат

де n представляє показник ступеня, а 0.xxxxx - мантису.

Комп’ютерна індустрія погодила стандарт зберігання чисел з плаваючою комою. Він називається стандартом IEEE 754 і використовує 32 біти пам'яті (для одинарної точності) або 64 біти (для подвійної точності). Формат єдиної точності виглядає так,

Знаковий біт дорівнює 1 для негативної мантиси та 0 для позитивної мантиси.

Експонента використовує зміщення 127.

Мантиса зберігається як двійкове значення за допомогою техніки кодування.

Розробка шаблонів бітів FP
Номер у нас є

що виражається часткою до степеня 2,

ПРИМІТКА. Продовжуйте ділити на 2 до дробу між результатами 0 та 1. Дріб - це значення мантиси, кількість поділок - значення показника.

таким чином наші цінності зараз,

Шаблон біта експоненти зберігається із перевищенням 127. Це означає, що це значення додається до показника ступеня при зберіганні (і віднімається при видаленні).

Шаблон біта експоненти для зберігання,

Оскільки мантиса є позитивним значенням, знаковий біт дорівнює 0.

Мантісу трохи складніше опрацювати. Кожен біт представляє 2 в степені від’ємного числа. Це виглядає як,

Число мантиси, яке ми маємо, дорівнює 0,78125, що в двійковій формі дорівнює

Однак, щоб зробити ситуацію ще більш складною, мантіса нормалізується шляхом переміщення бітових шаблонів вліво (кожен зсув віднімає одиницю від показника експоненти), поки перший 1 не випаде.

Потім отриманий шаблон зберігається.

Мантиса тепер стає

а показник ступеня налаштований на перетворення

Остаточний зібраний формат -,

Тепер дозволяє перетворити наступний формат сховища назад у десяткове число.

Це дає від’ємне число із показником значення,

і значення мантиси,

(1,0 походить від біта, який був зміщений при нормалізації мантиси), отже, число є,

Числовий діапазон для чисел із плаваючою комою за методом IEEE-754, що використовує 32 біти, становить

У мові Паскаль числа з плаваючою комою визначаються та використовуються наступним чином,

Приклад оголошує змінну fp_number бути типом з плаваючою комою, таким чином для зберігання його значення виділено тридцять два біти пам’яті (поки не визначене).

Усередині основної частини програми, після ключового слова почати, показаний вираз присвоює числовому значенню 12.50 дійсну змінну fp_number. Це еквівалентно збереженню бітових комбінацій 01000001010010000000000000000000 у тридцяти двох бітах пам'яті, виділених змінній fp_number.

Переваги зберігання чисел з плаваючою комою таким чином є,

  • множення виконується додаванням показників та мантиси
  • ділення здійснюється шляхом віднімання показників степеня та мантиси
  • легко порівняти два числа, щоб побачити, яке є більшим чи меншим
  • велика кількість діапазонів зберігається з використанням відносно невеликої кількості бітів

Недоліками формату зберігання є,

  • помилки створюються переміщенням біт мантиси
  • перетворення назад і вперед вимагає часу