ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Арифметичні основи ЦВМ
         

     

    Комп'ютерні науки
    Арифметичні основи ЦВМ

    1.1. Системи числення

    У повсякденній практиці для подання чисел люди користуються майже виключно десяткового системою числення. Лише в окремих випадках зустрічаються залишки інших систем - римський рахунок, двенадцатірічная система (години), шестидесяткова (хвилини).
    Однак система зображення чисел, яка віками складалася стосовно до ручної праці, не дозволяє отримати найбільш ефективні методи виконання обчислень. З цієї причини в обчислювальній техніці застосовуються інші системи числення і найчастіше - двійкова.
    Введемо кілька визначень.
    Система числення - сукупність символів і правил для позначення чисел.
    Розділяють системи числення позиційні і непозиційної. Непозиційної система числення задається перерахуванням зображуваних у ній значень. Позиційна система числення характеризується підставою і тим, що числа, як правило, передаються декількома розрядами (є багаторозрядних), а вага будь-якого розряду визначається його позицією в числі.
    Oснованіе позиційної системи числення визначає кількість різних цифр (символів), допустимий в системі числення. Це ж число визначає, у скільки разів вага цифри даного розряду менше ваги цифри сусіднього старшого розряду.
    Так, в десятковій системі числення, заснування якої дорівнює 10, розрізняють 10 арабських цифр - 0, 1, 2 ,..., 9. Отже, при її використанні для запису числа, що не перевищує дев'яти, достатньо однієї цифри, і таке число записується як однорозрядних. А у випадку запису числа, більшого дев'яти, воно представляється як багаторозрядних. При цьому вага кожного більш старшого (розташованого зліва від поточного) розряду в десять (основа системи числення) разів більше поточного.
    Так, наприклад, число 359 - трехразрядное, і в ньому 9 - цифра розряду одиниць, 5 - цифра розряду десятків, 3 - цифра розряду сотень (у 10 разів перевищує вагу розряду десятків). При цьому значення трехразрядного числа 359 виходить підсумовуванням трьох доданків: 3 сотні + 5 десятків + 9 одиниць.
    Загальне правило визначення ваги розряду багаторозрядних числа таке:
     Якщо пронумерувати розряди цілого числа справа наліво, починаючи від 0 для розряду одиниць, то вага будь-якого розряду виходить зведенням основи системи числення в ступінь, значення якої одно номером розряду.

    Так, вага самого молодшого розряду цілих чисел дорівнює 1, оскільки номер розряду дорівнює 0, а будь-яке число, у тому числі і число 10, зведена в нульову ступінь, дає в результаті одиницю. Вага наступного ліворуч розряду дорівнює 10 в ступені 1, тобто дорівнює десяти, і т.д.
    Це ж правило справедливо і для запису дрібних чисел. При цьому розрядами праворуч від розряду одиниць, що має номер 0, присвоюються негативні значення: -1, -2, і т.д., а їх ваги виходять також при зведенні підстави 10 у відповідний ступінь. Так, наприклад, вага третього розряду в дробової частини числа 42,9724 буде дорівнює 10 в ступені (-3), тобто дорівнює однієї тисячної.
    Зазначене правило можна проілюструвати наступним чином:
    Число 7 5 0 6 8, 2 5 9
    Номер розряду 4 3 2 1 0 -1 -2 -3
    Вага розряду 10000 1000 100 10 1 0,1 0,01 0,001
    Як видно з прикладу, в позиційній системі числення достатньо знати значення основи системи числення, символи, що зображують окремі цифри, і зазначене правило, щоб уявити будь-яке число.
    У обчислювальній техніці широко застосовують двійкову, вісімкову і шестнадцатірічное систему числення.
    Двійкова система числення має підставу 2, і, отже, дві різні цифри - 0 і 1; вісімкова - вісім різних цифр - 0, 1, 2, 3, 4, 5, 6, 7, а шестнадцатірічное - шістнадцять цифр - десять арабських цифр від 0 до 9 і ще шість символів -
    А (цифра, що зображає десять), D (цифра тринадцять),
    В (цифра одинадцять), E (цифра чотирнадцять),
    С (цифра дванадцять), F (цифра п'ятнадцять).
    Простіше за все зіставити запис одних і тих самих чисел в цих системах числення можна з використанням таблиці 1, наведеної на наступній сторінці.
    Ми вже говорили про те, що сучасні цифрові ЕОМ всі використовують як основну двійкову систему числення. До її достоїнств відноситься:
    * Простота виконання арифметичних і логічних операцій, що тягне за собою простоту пристроїв, що реалізують ці операції;
    * Можливість використання апарата алгебри логіки (булевої алгебри) для аналізу та синтезу операційних пристроїв ЕОМ.
    До незручностей двійкової системи числення відноситься необхідність переведення чисел з десяткової в двійкову і навпаки, а також те, що запис числа в двійковій системі громіздка (вимагає більшої кількості розрядів, ніж звична для людини десяткова). З цієї та ряду інших причин, крім двійковій застосовуються вісімкова і шістнадцятковій системі числення.
    Таблиця 1.1
     С и с т е м а з ч и с л е н н я
    10 2 8 16
    0 0 0 0
    1 1 1 1
    2 0 1 2 2
    3 1 1 3 3
    4 1 0 0 4 4
    5 1 0 1 5 5
    6 1 1 0 6 6
    7 1 1 1 7 7
    8 1 0 0 0 1 0 8
    9 1 0 0 1 1 1 9
    10 1 0 1 0 1 2 A
    11 1 0 1 1 1 3 B
    12 1 1 0 0 1 4 C
    13 1 1 0 1 1 5 D
    14 1 1 1 0 1 6 E
    15 1 1 1 1 1 7 F
    16 1 0 0 0 0 2 0 1 0

    Спільне використання зазначених систем зумовлено двома причинами:
    * В вісімковій і шістнадцятковій системах будь-яке число записується більш компактно, ніж двійкове;
    * Простотою перетворення із двійкової у вісімкову (шестнадцатіріч-ву) систему числення і навпаки.
    Наведемо правила перекладу чисел із двійкової системи в вісімкову (шестнадцатірічное) і навпаки.
    П1.Правіло перекладу "8с/с -> 2c/c"

    При перекладі багаторозрядних числа кожну цифру вихідного восьмеричного числа представити завжди точно трьома двійковими цифрами, взятими з наведеної вище таблиці. При цьому, якщо для запису відповідної вісімковій цифри у вигляді двійкової потрібно менше трьох двійкових цифр, двійковий еквівалент доповнюється зліва нулями (незначущий нулі не спотворять значення числа). Таким чином, наприклад, при записі чотирирозрядний восьмеричного числа повинно вийти двенадцатіразрядное двійкове. Після закінчення такого перетворення можна відкинути старші для всього числа незначущий двійкові цифри.
    Відзначимо, що три цифри прийнято називати тріадою. Тому можна сказати, що при описуваному перекладі кожна вісімкова цифра замінюється відповідної їй тріадою двійкових цифр.
    Якщо вихідне число дробове, тобто має цілу і дрібну частину, то в двійковому числі кома ставиться між тріадами, що представляють відповідні цифри вихідного числа.
    Приклад.
    Перетворимо вісімкове число 371,62.
    Для цього запишемо для кожної цифри відповідну тріаду:
    3 -> 011
    7 -> 111
    1 -> 001
    6 -> 110
    2 -> 010
    Тепер можна записати число в двійковій формі (для наочності між тріадами помістимо пробіли):
    371,62 -> 011 111 001, 110 010
    І, нарешті, запишемо отримане двійкове числа так, як це прийнято в математиці, без незначних нулів, а також відкинувши праві нулі в дробової частини числа:
    371,62 -> 11111001,11001
    П2. Правило перекладу "2с/с -> 8c/c"

    При перекладі багаторозрядних двійкового числа у вісімкову форму надходять у такий спосіб: Початкове число розбивають на тріади. При цьому для цілої частини числа розбиття проводять від місцезнаходження комою вліво, а для дробової частині - від цього ж місця вправо. Потім сама ліва група при необхідності доповнюється незначущий нулями до утворення тріади, а сама права група тільки в дробової частини доповнюється нулями справа також до утворення повної тріади. Після цього кожна тріада замінюється відповідної вісімковій цифрою. Розташування комою зберігається за тими ж правилами, що і в правилі П1.
    Приклад.
    Уявити двійкове число 1101100,01111101 у формі восьмеричного.
    Розіб'ємо вихідне число на групи по три цифри, прийнявши в якості точки відліку місце розташування коми (для наочності між тріадами помістимо пробіли):
    1 101 100, 011 111 01
    Тепер доповнимо до трьох цифр нулями саму ліву групу зліва і саму праву групу справа:
    001 101 100, 011 111 010
    І, нарешті, замінимо кожну тріаду відповідної вісімковій цифрою:
    001 101 100, 011 111 100 -> 154,372

    П3. Правило перекладу "16с/с -> 2c/c"

    При перекладі багаторозрядних шестнадцатірічное числа у двійкову форму кожну цифру вихідного числа замінюють групою точно з чотирьох двійкових цифр (замінюють тетрадою двійкових цифр). Розташування комою зберігається за тими ж правилами, що і в правилі П1. В остаточній записи можна відкинути самі ліві (незначущий) нулі й самі праві нулі дробової частини.
    Приклад. Перетворити шестнадцатірічное число "6C, 7D" у двійкову форму.
    Для цього запишемо для кожної цифри відповідну тетраду:
    6 -> 0110
    C -> 1100
    7 -> 0111
    D -> 1101
    Тепер можна записати число в двійковій формі (для наочності між зошитами помістимо пробіли):
    6C, 7D -> 0110 1100, 0111 1101
    І, нарешті, запишемо отримане двійкове числа так, як це прийнято в математиці, без незначних нулів:
    6C, 7D -> 1101100,01111101
    П4. Правило перекладу "2с/с -> 16c/c"

    При перекладі багаторозрядних двійкового числа в шестнадцатірічное форму надходять у такий спосіб. Початкове число розбивають на тетради. При цьому для цілої частини числа розбиття проводять від місцезнаходження комою вліво, а для дробової частини від цього ж місця вправо. Потім сама ліва група при необхідності доповнюється незначущий нулями до утворення тетради, а сама права група тільки в дробової частини доповнюється нулями справа також до утворення повної тетради. Після цього кожна тетрада замінюється відповідної шістнадцятковій цифрою. Розташування комою зберігається за тими ж правилами, що і в правилі П1.
    Приклад. Уявити двійкове число 1101100,01111101 у формі шест-надцатірічного.
    Розіб'ємо вихідне число на групи по чотири цифри, прийнявши в якості точки відліку місце розташування коми (для наочності між зошитами помістимо пробіли):
    110 1100, 0111 1101
    Тепер доповнимо до чотирьох цифр нулями зліва саму ліву групу:
    0110 1100, 0111 1101
    І, нарешті, замінимо кожну тетраду відповідної шістнадцятковій цифрою:
    0110 1100, 0111 1101 -> 6С, 7D.
    Шестнадцатірічное і вісімкова системи числення використовуються для більш компактною і зручною запису двійкових чисел.
    Так, популярність шістнадцятковій системі принесло те, що з її використанням зручно представляти програми в кодах більшості сучасних ЕОМ.
    1.2. Переклад чисел з однієї системи числення
    в іншу

    Оскільки в практичній діяльності люди звикли оперувати десяткового системою числення, а в ЕОМ числа представляються в двійковій, необхідно навчитися перетворювати числа з однієї системи числення в іншу. Розглянуті вище правила перекладу з двійкової системи числення у вісімкову і шестнадцатірічное і навпаки носять приватний характер і не можуть бути поширені на інші системи. Тут же ми розглянемо загальні правила перекладу, справедливі для будь-якої пари систем числення, хоча й більш громіздкі і трудомісткі в порівнянні з розглянутими вище.
    Правила перекладу цілих і дрібних чисел не збігаються, тому наведемо три правила перекладу чисел із системи числення з основою R в систему числення з основою Q.
    Правило 1. Переклад цілих чисел

    Для переведення цілого числа N, представленого в системі числення (с/с) з підставою R, в с/с з підставою Q необхідно дане число ділити на основу Q за правилами с/с з підставою R до отримання цілого залишку, меншого Q. Отримане приватне знову потрібно ділити на основу Q до отримання нового цілого залишку, меншого Q, і т.д., до тих пір, поки останнє приватне буде менше Q. Число N в с/с з підставою Q випаде у вигляді не впорядкованої послідовності залишків поділу в порядку, зворотному їх отримання (іншими словами, старшу цифру числа N дає останнє приватне).

    Приклад. Перетворити десяткове число 67 у двійкову форму.
    Підстава вихідної системи числення R = 107. Основа нової системи числення Q = 2.
    Згідно з наведеним правилом треба вихідне число 67 ділити на основу нової системи (на 2) за правилами десяткової системи числення (початкова с/с).
    Оскільки процес поділу на 2 дуже простий, скористаємося наступним прийомом: у лівому стовпчику будемо писати поточні приватні, а у правому - поточні залишки від їх ділення на 2 (це може бути або 0, або 1):
    67 1 При діленні 67 на 2 виходить приватне 33 і залишок 1;
    33 1 при діленні 33 - приватна 16 і залишок 1 і т.д.
    16 0
    8 0
    4 0
    2 0
    1 1
    0
    Тепер можна записати число 67 у новій системі числення. Воно рівне 1000011.
    Правило 2. Переклад правильного дробу

    Переклад правильного дробу, представленої в с/с з підставою R, в с/с з підставою Q полягає у послідовному збільшенні цього дробу на підставу Q за правилами системи числення з основою R, причому перемножувати тільки дробові частини. Дріб N в с/с з підставою Q представляється у вигляді упорядкованої послідовності цілих частин творів в порядку їх отримання. (Іншими словами, старший розряд є першою цифрою твори). Кількість послідовних творів визначає кількість цифр в отриманому числі.

    Для багатьох чисел зазначений процес множення потенційно ніколи не кінчається. Тому він продовжується до тих пір, поки не буде отримано необхідну кількість цифр дробової частини. При перекладі числа з метою представлення її в "машинної" формі можна точно вказати необхідну кількість цифр. (Це буде розглядатися пізніше, у розділі 1.5).
    Приклад. Перевести в двійкову систему числення десяткову дріб 0,7243.
    Підстава вихідної системи числення R = 10. Основа нової системи числення Q = 2.
    Відповідно до наведеного правила вихідне число 0,7243 треба множити на основу нової системи (на 2) за правилами десяткової системи числення (початкова с/с). Виконаємо серію множень до отримання, наприклад, шести цифр у двійковому числі:
    Шукані цифри дробу:
    0,7243 * 2 = 1,4486 1 -> старша цифра
    0,4486 * 2 = 0,8972 0
    0,8942 * 2 = 1,7944 1
    0,7944 * 2 = 1,5888 1
    0,5888 * 2 = 1,1776 1
    0,1776 * 2 = 0,3552 0
    0,3552 * 2 = 0,7104 0

    Шукалося подання число 0,7243 у двійковій системі числення -> 0,101110.
    Зверніть увагу, що для отримання шести цифр дробу виконано сім множень
    Це пов'язано з необхідністю виконати округлення, щоб представити дріб заданої довжини більш точно.
    З останнього прикладу, кінцева дріб в одній системі числення може стати нескінченної в іншій. Це твердження справедливо для всіх випадків, коли одна система числення не може бути отримана зведенням в цілу ступінь підстави інший.
    Приклади.
    * Десяткова дріб 0,2 видається нескінченним дробом 0,33333 ... в шістнадцятковій системі числення (підстави с/з 10 і 16).
    * Шестнадцатірічное дріб 0, В1 представляється кінцевої дробом 0,10110001 в двійковій системі числення (підстави з/с 16 і 2).

    Правило 3. Переклад неправильного дробу

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

    1.3. Двійкові коди для десяткових цифр

    У ряді випадків в обчислювальній техніці застосовується не тільки двійкова, а й десяткова система числення. Однак і в цьому випадку для представлення десяткових цифр використовується обладнання, розроблене для представлення двійкових цифр. У цьому випадку говорять про двійковій-десяткових кодах десяткових цифр.
    Відповідно до формули Хартлі для подання 10 різних цифр потрібно чотири біта інформації:
    3 біти
    Таким чином, при необхідності представити десять різних десяткових цифр комбінаціями двійкових цифр, кожну з них можна представити мінімум тетрадою двійкових чисел. Більшість кодів десяткових цифр використовує тетради, хоча є і коди, у яких для кодування використовується більше число бітів.
    Найбільш поширені двійковій-десяткові коди, у яких для представлення десяткових цифр використовуються позиційні методи кодування. Так, якщо розглядати чотири двійкових розряду тетради як чотирирозрядний двійкове число, то ваги її окремих розрядів зліва направо будуть дорівнюють відповідно 8, 4, 2 і 1.
    Тому перший двійковій-десятковий код, який ми розглянемо, що позначає код "8421". Його можна назвати кодом з природними вагами.
    У цьому коді кожна десяткова цифра видається її двійковим еквівалентом:
    цифра 0 як 0000,
    цифра 1 як 0001,
    цифра 2 як 0010,
    цифра 5 як 0101,
    цифра 8 як 1000,
    цифра 9 як 1001.
    У той же час, маючи чотири двійкових цифри, можна уявити не 10, а 16 різних комбінацій. Таким об?? азом, при використанні коду "8421" шість комбінацій: 1010, 1011 ,..., 1111 залишаться невикористаними, тобто не будуть зображувати жодної з десяткових цифр. Ці комбінації вважаються забороненими.
    а) Коди з надлишком

    Крім розглянутої системи кодування досить широко використовуються також так звані коди з надлишком. Розглянемо групу кодів "8421" з надлишком ".
    Код "8421" з надлишком W "будується за наступними правилами:
    При кодуванні десяткової цифри, до неї спочатку додають W, і потім отримане число представляють як двійкове в коді "8421".

    Значення W може бути рівним 1, 2, 3, 4, 5 або 6. При будь-якому значенні надлишку W шість з шістнадцяти комбінацій залишаться невикористаними. Тільки для різних надлишків ці значення будуть різними.
    Приклад. Розглянемо код "8421" з надлишком 3 ".
    а) Уявімо цифру 8 в даному коді.
    Спочатку збільшимо 8 на 3. Вийде 11.
    Потім запишемо 11 в коді "8421". Вийде 1011.
    Число 1011 і є подання цифри 8 в даному коді.
    б) Відновимо цифру, яка зображується комбінацією 0101.
    Спочатку наведемо десяткове число, розглядаючи комбінацію 0101, як його зображення в коді "8421". Вийде число 5.
    Потім віднімемо з нього (з 5) надлишок 3. Вийде 2.
    Це і є шуканий відповідь: Комбінація 0101 зображує десяткову цифру 2 в коді "8421" з надлишком 3 ".
    в) Відновимо цифру, яка зображується комбінацією 1110.
    Відновимо десяткове число. Вийде 14.
    Віднімемо з нього надлишок 3. Вийде 11.
    Оскільки 11 не є десяткового цифрою (це двухразрядное десяткове число), робимо висновок, що комбінація 1110 не зображує ніякої десяткової цифри і є забороненою.
    б) Код "2421"
    Крім кодів з природними вагами розрядів застосовуються і інші. Одним з широко відомих кодів є позиційний код, побудований з використанням тетради двійкових цифр, ваги яких зліва направо рівні відповідно: 2, 4, 2 і 1.
    Уявімо коди цифр у таблиці:
    Цифра Код "2421" Цифра Код "2421"
    0 0000 5 0101 або 1011
    1 0001 6 0110 або 1100
    2 0010 або 1000 7 0111 або 1101
    3 0011 або 1001 8 1110
    4 0100 або 1010 9 1111
    Як видно з таблиці, ряд десяткових цифр можуть бути представлені двома не співпадають двійковими комбінаціями.
    Наприклад, комбінації 0100 і 0010 зображують цифру 2, комбінації 1010 і 0100 зображують цифру 4 і т.д. Відмінною рисою даного коду є те, що в ньому немає невикористаних (заборонених) комбінацій.
    в) Код "2 з 5"
    Цей код належить до непозиційної кодами. Як і всі непозиційної коди він визначається табличним способом. Його назва відображає принцип побудови коду: будь-яка десяткова цифра представляється комбінацією з 5 двійкових цифр, в якій точно дві цифри 1 і, отже, три цифри 0.
    Уявімо таблицю одного з можливих варіантів для даного коду:

    Цифра Код Цифра Код
    0 11000 5 01010
    1 00011 6 01100
    2 00101 7 10001
    3 00110 8 10010
    4 01001 9 10100

    Всі інші можливі комбінації, в яких число одиниць не дорівнює двом, є забороненими.
    Також як і всі коди на основі тетради "8421", останній код належить до групи кодів, що володіють так званими діагностичними можливостями: Якщо відомо, що деяка комбінація повинна зображати десяткову цифру, але потрапляє в область заборонених, значить відбулося перекручування інформації. Ця властивість кодів активно використовується в апаратурі ЕОМ.
    Для закріплення матеріалу з перекладу чисел з однієї системи числення в іншу виконаємо кілька прикладів.
    Приклад 1. Уявити десяткове число 581 у двійковій, вісімковій і шістнадцятковій системах числення.
    Завдання можна вирішити з мінімальними витратами зусиль, виконавши, наприклад, переклад в двійкову с/р за загальним правилом (тобто поділом на підставу 2 за правилами десяткової системи числення), а потім із двійкової у восьми-і шестнадцатірічное системи числення, використовуючи спрощені правила (кодуванням відповідно зошити і тріад).
    Приклад 2. Уявити десяткове число 993,761 в двійковій і шістнадцятковій системах числення.
    Завдання можна вирішити таким же чином, як і попередню.
    Приклад 3. Уявити шестнадцатірічное число 8363 в десятковій системі числення.
    Скористаємося загальним правилом. Для цього треба вихідне число ділити на 10 за правилами шістнадцятковій системи числення.
    Що ж це за правила? Це такі ж правила додавання, віднімання, множення і ділення, що і в десяткового с/с, але над числами в позиційній шістнадцятковій с/с.
    Виконаємо переклад:

     8 3 6 3 A
     _ (131)
     (130) D 2 3 A
     ------- A
     1 6 ---- 1 5 0 A
     _ (22) 3 2 _ (21)
    (20) _ (50) (20) 2 1 A
     ----- (50) ----- _ (33)
    2 3 ----- 1 0 (30) 3
    _ (35) 0 3 _ (16) -----
    (30) (10) 3
    ----- -----
    5 6
    Шукалося число в десяткового системі дорівнює 33635.
    Примітка. В круглих дужках записані десяткові еквіваленти відповідних шістнадцяткові чисел. При цьому в кожній парі чисел, розташованих один під одним, перше число - часткове ділене, а другий - твір дільника на часткове приватне. Так запис (131) - еквівалент шестнадцатірічное ділене 83, а (130) - результат множення дільника А (= 10) на D (13).
    1.4. Арифметика цифрових обчислювальних машин

    Як вже говорилося вище, практично всі сучасні цифрові ЕОМ як основний використовують двійкову систему числення. А всі арифметичні операції над двійковими числами можна звести до двох елементарним - складання і зрушення двійкових кодів, що зображують числа. Це дозволить технічно реалізувати чотири дії арифметики в одному пристрої, званому арифметико-логічному (АЛП), використовуючи одні й ті ж електричні схеми.
    1.4.1. Представлення чисел зі знаками

    При виконанні арифметичних операцій в ЕОМ застосовують прямий, зворотний і додатковий коди.
    Як вже говорилося вище, кодом називають такий запис числа, яка відрізняється від природної і загальноприйнятою. Так ось, у математиці природною формою запису числа є запис, при якій безпосередньо перед старшої значущою цифрою числа поміщається знак плюс (+) або мінус (-), а довжина запису визначається величиною числа (інакше, кількість символів, використаних для запису різних чисел, як правило, не збігається). У ЕОМ це не так. Однією з найважливіших характеристик будь-якій ЕОМ є довжина слова в ній. Довжина слова визначається кількістю двійкових розрядів слова.
    Тому в ЕОМ, незалежно від величини числа, його код завжди має фіксовану кількість двійкових цифр.
    Крім цього, в двійковому алфавіті немає ніяких символів, окрім цифр 0 і 1, і необхідні нові правила для зазначення знака числа. Суть цих правил зводиться до того, що знак плюс зображується цифрою 0, знак мінус - цифрою 1, а цифра, що зображає знак завжди записується найпершої в запису числа.
    Зверніть увагу, що код числа завжди містить зображення його знаку, на відміну від математичного запису, що дозволяє опускати знак плюс при зображенні позитивного числа.
    Так, код 011101, згідно з цими правилами, зображує позитивне (сама ліва цифра - 0) двійкове число 11101.
    Для того, щоб більш просто, і, отже, більш економічно реалізувати пристрій АЛУ застосовують кілька різних кодів чисел. Це пов'язано з тим, що різні операції в ЕОМ більш просто реалізуються в різних кодах.
    При виконанні арифметичних операцій в ЕОМ застосовують прямий, зворотний і додатковий коди чисел.
    Прямий код двійкового числа - це саме двійкове число, в якому всі цифри, які зображують його значення, записуються як у математичного запису, а знак числа записується двійковій цифрою.
    При цьому жодного символу, що відділяє цю цифру від старшої цифри, що використовується при зображенні його величини, не допускається. У таких випадках говорять про те, що призначення цифри в коді визначається його позицією.
    Приклади.
    Зображуване число Код
    * +1101 (+13) 0000 1101 (У прикладах коди)
    * +1011101 (+93) 0101 1101 (зображуються)
    * 1101 (-13) 1000 1101 (вісьмома цифрами)

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

    Число -2 -1 0 +1 +2
    Код 10010 10001 00000 00001 00010

    Як видно з прикладу, при використанні прямого коду при переході значення числом через нуль, відбувається стрибкоподібне зміна коду! Тому побудова пристрою, в якому мають виконуватися такі дії арифметики, як складання чисел з різними знаками і віднімання, стає складним завданням.
    Прямий код використовується при зберіганні чисел в пам'яті ЕОМ, а також під час виконання операцій множення і ділення.
    Щоб побудувати більш прості схеми АЛУ запропоновані і активно застосовуються зворотний і додатковий коди.
    Зворотний код позитивного числа збігається з прямим, а при записі від'ємного числа всі його цифри, крім цифри, що зображає знак числа, замінюються на протилежні (0 замінюється на 1, а 1 - на 0).

    Приклади запису.
    Зображуване число Код
    * +1101 (+13) 0000 1101 (У прикладах коди)
    * +1011101 (+93) 0101 1101 (зображуються)
    * 1101 (-13) 1111 0010 (вісьмома цифрами)
    Зіставлення цієї записи з прямим кодом показує, що безпосередньо відновити абсолютну величину (модуль) негативного числа непросто. Проте, в цьому коді як до позитивних, так і до негативних числах можна застосовувати одні й ті ж правила, а операцію А-В можна замінити операцією додавання чисел А і "мінус В".
    Подивимося, як видається послідовні числа при переході через нуль:
    Число -2 -1 0 +1 +2
    Код 11101 11110 00000 00001 00010
    З прикладу видно, що перехід через нуль також не виглядає природним. Зазначена особливість тягне за собою і наступне - в зворотному коді нуль зображують два розрізняються комбінації: 00000 (+0) і 11111 (-0), що ускладнює апаратну реалізацію операцій.
    Для відновлення прямого коду негативного числа з зворотного коду треба всі цифри, крім цифри, що зображає знак числа, замінити на протилежні.
    Додатковий код позитивного числа збігається з прямим, а код від'ємного числа утворюється як результат збільшення на 1 його зворотного коду.

    Іншими словами, процес побудови додаткового коду негативного числа можна розбити на два етапи - побудувати зворотний код, а потім з нього побудувати додатковий.
    Проілюструємо це на прикладі.
    Число -> - 101101
    Прямий код -> 1101101
    Зворотний код -> 1010010
    1
    Додатковий -> 1010011
    Приклади запису.
    Зображуване число Код
    * +1101 (+13) 0000 1101 (У прикладах коди)
    * +1011101 (+93) 0101 1101 (зображуються)
    * 1101 (-13) 1111 0011 (вісьмома цифрами)
    У додатковому коді, на відміну від зворотного, нуль зображується тільки однією комбінацією, і крім цього, досить природно виходить перехід через нуль, якщо мати на увазі, що будь-яке число, більше іншого на 1, виходить при додатку до цього іншому 1 за правилами складання . Стосовно до додаткового коду це саме так, якщо взяти до відома, що розрядність слова фіксована, і одиниця переносу зі старшого розряду втрачається, оскільки її нема куди записати:
    2 -> 11101 + 1 = 11110
    1 -> 11110 + 1 = 11111
    0 -> 11111 + 1 = (1) 00000 (перенесення відкидається)
    1 -> 00000 + 1 = 00001
    2 -> 00001 + 1 = 00010
    Для відновлення прямого коду числа з додаткового потрібно повністю повторити (і саме в тому ж порядку!) Дії, які використовувалися при перекладі з прямого в додатковий код: спочатку всі цифри, крім цифри, що зображає знак, замінити на протилежні, а потім додати 1.
    Основною перевагою додаткового коду є те, що в ньому одноманітно реалізуються операції додавання чисел різних знаків (алгебраїчне складання), а операцію віднімання можна звести до операції додавання заміною знака віднімається на зворотний. Згадавши, що в пам'яті ЕОМ числа зберігаються в прямому коді, стане ясно, що заміна знака віднімається може бути виконана надзвичайно просто (заміною знака числа в прямому коді на зворотний). Саме із зазначеної причини додатковий код застосовується частіше зворотного.

    1.4.2. Додавання і віднімання чисел

    Додавання і віднімання чисел у зворотному та додатковому кодах виконується з використанням звичайного правила арифметичного додавання багаторозрядних чисел. Спільною для цих кодів особливістю (і дуже зручною особливістю) є лише те, що при порозрядної складання чисел розряди, що зображують знаки чисел розглядаються як рівноправні розряди двійкового числа, які складаються один з одним і з одиницею переносу з попереднього розряду числа за звичайними правилами арифметики. Відмінності ж зворотного та додаткового кодів пов'язані з тим, що робиться з одиницею переносу зі старшого розряду (зображує, як неодноразово говорилося, знак числа).
    При складання чисел в додатковому коді одиниця переносу зі старшого розряду ігнорується (втрачається), а у зворотному коді цю одиницю треба додати до молодшого розряду результату.
    Приклад 1. Скласти числа 12 і -5.
    а) У зворотному коді
    Десяткова форма -> +12 -5
    Двійкова форма -> +1100 -101
    Прямий код -> 00001100 10000101
    Зворотний код -> 00001100 11111010
    Виконаємо додавання в стовпчик:
    0 0 0 0 1 1 0 0
    1 1 1 1 1 0 1 0
    ===============< br /> (1) 0 0 0 0 0 1 1 0
     + 1 (Додавання 1 перенесення)
    ==============< br /> 0 0 0 0 0 1 1 1
    Отже, результат у зворотному коді = 00000111.
    Оскільки знаковий розряд дорівнює 0, результат позитивний, і, отже, запис коду числа збігається із записом прямого коду. Тепер можна відновити алгебраїчну запис результату. Він дорівнює +111 (незначущий нулі відкинуті), або в десяткового формі 7.
    Перевірка (+12-5 = +7) показує, що результат вірний.
    а) У додатковому коді
    Десяткова форма -> +12 -5
    Двійкова форма -> +1100 -101
    Прямий код -> 00001100 10000101
    Зворотний код -> 00001100 11111010
    1
    Додатковий код -> 00001100 11111011

    Виконаємо додавання в стовпчик:
    0 0 0 0 1 1 0 0
    1 1 1 1 1 0 1 1
    ============< br /> (1) 0 0 0 0 0 1 1 1
    (Перенесення ігнорується)
    Отже, результат в додатковому коді = 00000111.
    Оскільки знаковий розряд дорівнює 0, результат позитивний, і, отже, запис коду числа збігається із записом прямого коду. Тепер можна відновити алгебраїчну запис результату. Він дорівнює +111 (незначущий нулі відкинуті), або в десяткового формі 7.
    Перевірка (+12-5 = +7) показує, що результат вірний.
    Множення і ділення двійкових чисел здійснюється в ЕОМ в прямому коді, а знаки їх використовуються лише для визначення знака результату. Також як і в математиці, множення зводиться до операцій складання та зсуву. Ділення виконується за рахунок комбінування зрушень, віднімання (у цей момент можуть використовуватися зворотний або додатковий коди) і додавань.
    1.5. Кодування чисел в ЕОМ

    У ЕОМ застосовується частіше всього одна з двох форм представлення чисел:
    * З фіксованою комою;
    * З плаваючою комою.
    Числа представляються в машинному слові, що має для конкретної ЕОМ завжди фіксоване число розрядів (бітів). Це число є однією з найважливіших характеристик будь-якій ЕОМ і називається розрядністю машини. Різні розряди слова при кодуванні команд і даних мають неспівпадаючі функціональні призначення. При розгляді їх функцій використовують також термін "розрядна сітка машини".
    1.5.1. Числа з фіксованою комою

    У числах з фіксованою комою положення коми в розрядної сітці машини заздалегідь обумовлено для всіх чисел раз і назавжди. Тому в коді числа кома ніяк не позначається. У більшості машин місце комою мається на увазі після останньої цифри (праворуч від неї). А такі числа - цілі. При необхідності представляти дробові числа з використанням форми з фіксованою комою програміст повинен алгоритмічними засобами забезпечити використання множника, що виконує функцію масштабування (масштабного множника).
    Визначимо діапазон представимо чисел.
    Спочатку розглянемо приклад, в якому покладемо, що ми маємо справу з десяткового (а не двійковій) системою числення, і що для запису абсолютної величини числа (без урахування його знаку) в нашому розпорядженні є шість розрядів.
    Тоді максимальне (за абсолютною величиною) ціле дорівнюватиме 999999 чи інакше 10 ** 6-1. А оскільки в розрядної сітці машини для запису знака числа завжди передбачається один розряд, то для нашого випадку діапазон представимо чисел складе всі цілі числа, починаючи від
    -999999 До 999999, а кількість відмінностейчних цілих - 2 * 10 ** 6-1.
    У двійкових ЕОМ їх розрядність визначається числом розрядів в слові. Так, якщо розрядність деякої ЕОМ дорівнює 16, то один розряд відводиться для кодування знака числа, а інші 15 - для запису його величини. При цьому максимальне за модулем ціле значення в машинному слові буде дорівнює 2 ** 15-1, що складе 32767. (Подивіться діапазон цілих (integer) чисел в мові програмування Паскаль для ПЕОМ типу IMB PC).
    У загальному випадку, якщо розрядність машини становить N бітів. Тоді максимальне за абсолютною величиною ціле число, яке можна в ній записати, буде дорівнює 2 ** (N-1) -1.
    Особливості арифметичних операцій над числами
    Оскільки (якщо стан коми фіксовано після останньої цифри числа) числа з фіксованою комою - цілі, вони є в машині точно. А тому операції додавання, віднімання та множення коректні завжди: як операнди, так і результат - цілі числа.
    Єдиною особливістю, про яку необхідно згадати, є ситуація, яка носить назву "переповнення розрядної сітки" (FixedOverflow - переповнення з фіксованою комою) і яка виникає, коли результат множення перевищує максимально можливе для даної розрядності значення. Ця ситуація вважається в ЕОМ винятковою. При її виникненні записати вийшло значення неможливо. У цьому випадку встановлюється в "1" спеціальний прапор переповнення, старший біт результату (біт переносу зі старшого розряду слова) втрачається, а як результат видається спотворене число. Описувана ситуація не вважається критичною, і після закінчення даної операції обчислення тривають. Таким чином, програміст сам повинен подбати про коректної реакції на виникнення переповнення, використовуючи для виявлення зазначеної ситуації вміст прапора переповнення.
    Інакше йде справа з операцією поділу. При розподілі цілого числа на інше ціле результат зовсім не обов'язково повинен бути цілим. А оскільки і результат повинен бути представлений цілим числом, виникає колізія, яку проілюструємо прикладом:
    5/2 = 2
    5/3 = 1
    5/4 = 1
    5/5 = 1
    5/6 = 0
    І на відміну від множення, з позицій ЕОМ ніяких помилок при цьому немає, і ніякі прапори не встановлюються, а зазначені особливості розподілу цілих повинні враховуватися програмістом самостійно. У ряді мов програмування ці особливості відображаються набором допустимих арифметичних операцій. Так, наприклад, у мові Паскаль для цілих (integer) визначені дві операції:
    div - цілочисельне поділ, при якому як результату видається ціла частина приватного,
    mod - залишок від ділення цілих (розподіл за модулем), при якому як результату подається ціла залишок від ділення, за абсолютною величиною менший дільника.
    Приклади:
    5 div 3 = 1
    5 mod 3 = 2
    1.5.2. Числа з плаваючою комою

    У формі з плаваючою комою число представляється двома компонентами: мантиси і порядком. Мантиса використовується для запису цифр числа, а порядок - для вказівки положення комою.
    Розрядна сітка маш
         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status