Основы объектно-ориентированного программирования на языке C# book | Page 92

6 Зображення чисел у комп’ютерi Вiд’ємнi числа завжди мiстять у двiйковому зображеннi одиницю в найстаршому розрядi, який називають знаковим. Абсолютна величи- на числа, що кодується, отримується як двiйкове доповнення iнших бiтiв (нулi потрiбно замiнити на одиницi, i навпаки), збiльшене на одиницю. Таке зображення називається додатковим кодом. Додатковий код двiйкового числа A, що зображується в n-розряднiй сiтцi, визначається як I = A, якщо A ≥ 0; I = c−|A|, якщо A < 0, де c – величина, що дорiвнює вазi розряду, який iде за старшим розрядом використовуваноı̈ розрядноı̈ сiтки: для дробiв c = 2 0 , для цiлих чисел c = 2 n . Для додатних i вiд’ємних чисел дiапазони значень, що зобра- жуються, рiзнi. Для додатних чисел, як i для прямого коду, 0 ≤ I < a, а для вiд’ємних 0 < |I| ≤ a. Iз визначення додаткового коду випли- ває, що старший (знаковий) розряд коду додатного числа дорiвнює 0, а вiд’ємного становить –1. Додатковий код вiд’ємного числа зручно одержувати через зворотний код. Додатковий код вiд’ємного числа може бути отриманий зi зворотно- го додаванням 1 до молодшого розряду зворотного коду. Наприклад, для чотирирозрядноı̈ сiтки 0101 (5) 1011 (–5) Для переведення числа в додатковий код можна рекомендувати й такий алгоритм: 1. У двiйковому зображеннi абсолютноı̈ величини числа всi одиницi замiнити нулями, i навпаки. 2. До отриманого результату додати одиницю. Застосуємо наведений алгоритм до числа –5. Нехай нас цiкавить стан- дартне 16-розрядне значення. Спочатку зобразимо модуль числа у двiйковому виглядi, доповнивши його нулями лiворуч до необхiдноı̈ кiлькостi розрядiв. Тодi десяткове число 5 перетвориться на 0000 0000 0000 0101. Зробимо замiну нулiв i одиниць; одержимо 1111 1111 1111 1010. Додамо одиницю й дiстанемо вiдповiдь: 1111 1111 1111 1011. При визначеннi величини числа знаковий розряд не використовується, то- му числа зi знаком мають максимальне значення, що складається iз 15 двiйкових розрядiв. Властивостями зображення чисел у додатко- вому кодi є: 1. Повторне застосування розглянутих вище правил переведення в додатковий код повертає вихiдне число. 2. Додавання вихiдного числа з його додатковим кодом завжди дає нульовий результат, тому що X + (−X) = 0. Узагальнюючи цю 92