Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

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

РефератДопомога в написанніДізнатися вартістьмоєї роботи

При перекладі многоразрядного двоичного вересня восьмеричну форму надходять так: Вихідний число розбивають на тріади. У цьому для цілої частини числа розбивка проводять від місцезнаходження коми вліво, а дробової частини — від надання цього місця вправо. Потім сама ліва група за необхідності доповнюється незначними нулями до освіти тріади, а сама права група лише у дробової частини доповнюється… Читати ще >

Арифметичні основи ЦВМ (реферат, курсова, диплом, контрольна)

АРИФМЕТИЧНІ ОСНОВЫ ЦВМ.

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

У повсякденній практиці до подання чисел люди користуються майже виключно десяткової системою числення. Лише окремих випадках зустрічаються залишки інших систем — римський рахунок, двенадцатиричная система (годинник), шестидесятиричная (минуты).

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

Введемо кілька определений.

Cистема числення — сукупність символів і керував для позначення чисел.

Поділяють системи числення позиційні і непозиционные. Непозиционная система числення задається перерахуванням зображуваних у ній значень. Позиційна система числення характеризується підставою і тих, що числа, зазвичай, видаються кількома розрядами (є многоразрядными), а вагу будь-якого розряду визначається її позицією в числе.

Oснование позиційної системи числення визначає кількість різних цифр (символів), дозволене у системі числення. Це самого числа визначає, скільки раз вагу цифри даного розряду менше ваги цифри сусіднього старшого разряда.

Так було в десяткової системі числення, створення якої одно 10, розрізняють 10 арабських цифр — 0, 1, 2, …, 9. Отже, у її використанні для записи числа, не перевищує дев’яти, буде достатньо однієї цифри, і такий число записується як одноразрядное. На разі записи числа, більшого дев’яти, його уявляю як многоразрядное. У цьому вагу кожного старшого (розташованого зліва поточного) розряду до 10 (підставу системи числення) разів більше текущего.

Приміром, число 359 — трехразрядное, у ньому 9 — цифра розряду одиниць, 5 — цифра розряду десятків, 3 — цифра розряду сотень (удесятеро перевищує вагу розряду десятків). У цьому значення трехразрядного числа 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 | |Вага розряду |10 000 |1000 |100 |10 |1 |0,1 |0,01 |0,001|.

Як очевидно з прикладу, в позиційної системі числення досить знати значення підстави системи числення, символи, що зображують окремі цифри, і вказане правило, аби уявити будь-яке число.

У обчислювальної техніки широко застосовують двійкову, восьмеричну і шестнадцатиричную систему счисления.

Двоичная система числення має підставу 2, і, отже, дві різних цифри — 0 і одну; восьмерична — вісім різних цифр — 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 | З | |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 -> 11 111 001,11001.

П2. Правило перекладу «2с/с -> 8c/c».

При перекладі многоразрядного двоичного вересня восьмеричну форму надходять так: Вихідний число розбивають на тріади. У цьому для цілої частини числа розбивка проводять від місцезнаходження коми вліво, а дробової частини — від надання цього місця вправо. Потім сама ліва група за необхідності доповнюється незначними нулями до освіти тріади, а сама права група лише у дробової частини доповнюється нулями справа також до освіти повної тріади. Після цього кожна тріада замінюється відповідної восьмеричної цифрою. Місце Розташування коми зберігається за тими самими правилам, що у правилі П1.

Приклад. Уявити двоичное число 1 101 100,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.

З —> 1100.

7 —> 0111.

D —> 1101.

Нині можна записати число в двоичной формі (для наочності між тетрадами помістимо пробелы):

6C, 7D -> 0110 1100, 0111 1101.

І, нарешті, запишемо отримане двоичное число оскільки прийнято в математиці, без незначних нулей:

6C, 7D -> 1 101 100,01111101.

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

При перекладі многоразрядного двоичного вересня шестнадцатиричную форму надходять так. Вихідний число розбивають на тетрады. У цьому для цілої частини числа розбивка проводять від місцезнаходження коми вліво, а дробової частиною, і цього місця вправо. Потім сама ліва група за необхідності доповнюється незначними нулями до освіти тетрады, а сама права група лише у дробової частини доповнюється нулями справа також до освіти повної тетрады. Після цього кожна тетрада замінюється відповідної шестнадцатиричной цифрою. Місце Розташування коми зберігається за тими самими правилам, що у правилі П1.

Приклад. Уявити двоичное число 1 101 100,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,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,101 110. Зверніть увагу, що з отримання шести цифр дробу виконано сім умножений Це з необхідністю виконати округлення, аби уявити дріб заданої довжини більш точно.

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

Примеры.

. Десяткова дріб 0,2 представляється безкінечною дробом 0,33 333… в шестнадцатиричной системі числення (підстави с/с 10 і 16).. Шестнадцатиричная дріб 0, В1 представляється кінцевої дробом 0,10 110 001 в двоичной системі числення (підстави с/с 16 і 2).

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

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

1.3. Двоичные коди для десяткових цифр

Нерідко в обчислювальної техніки застосовується як двоичная, а й десяткова система числення. Проте й цьому випадку для уявлення десяткових цифр використовується устаткування, розроблене для уявлення двійкових цифр. І тут говорять про двоично-десятичных кодах десяткових цифр.

Відповідно до формули Хартлі до подання 10 різних цифр потрібно чотири біта информации:

3 біта < I = log (10) < 4 бита.

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

Найпоширеніші двоично-десятичные коди, у яких для уявлення десяткових цифр використовуються позиційні методи кодування. Тож якщо розглядати чотири двійкових розряду тетрады як четырехразрядное двоичное число, то ваги її окремих розрядів зліва направо дорівнюватимуть відповідно 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 6 з шістнадцяти комбінацій залишаться невикористаними. Тільки до різних избытков цих значень будуть разными.

Приклад. Розглянемо код «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 |11 000 |5 |1 010 | |1 |11 |6 |1 100 | |2 |101 |7 |10 001 | |3 |110 |8 |10 010 | |4 |1 001 |9 |10 100 |.

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

Так само як і всі коди з урахуванням тетрады «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.

Искомое число в десяткової системі одно 33 635.

Примітка. У круглі дужки записані десяткові еквівалентами відповідних шестнадцатиричных чисел. Причому у кожної парі чисел, розташованих друг під іншому, перше число — часткове подільне, а друге — твір дільника на часткове приватне. Так запис (131) — еквівалент шестнадцатиричного діленого 83, а (130) — результат множення дільника, А (=10) на D (13).

1.4. Арифметика цифрових обчислювальних машин.

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

1.4.1. Уявлення чисел зі знаками.

За виконання арифметичних операцій на ЕОМ застосовують прямий, зворотний і додатковий коды.

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

Тож у ЕОМ, незалежно від величини числа, його код завжди має фіксований кількість двійкових цифр.

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

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

Так, код 11 101, відповідно до правил, зображує позитивне (сама ліва цифра — 0) двоичное число 11 101.

А, щоб простіше, і, отже, більш економічно реалізувати пристрій АЛУ застосовують кілька різних кодів чисел. Це пов’язана з тим, що різні операції в ЕОМ простіше реалізуються у різних кодах.

За виконання арифметичних операцій на ЕОМ застосовують прямий, зворотний і додатковий коди чисел.

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

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

Примеры.

Зображуване число Код. +1101 (+13) 0000 1101 (У прикладах коди). +1 011 101 (+93) 0101 1101 (зображуються). 1101 (-13) 1000 1101 (вісьмома цифрами).

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

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

|Число |-2 |-1 |0 |+1 |+2 | |Код |10 010 |10 001 |0 |1 |10 |.

Як очевидно з прикладу, під час використання прямого коду під час переходу значення число через нуль, відбувається стрибкоподібне зміна коду! Тому побудова устрою, у якому мають виконуватися такі дії арифметики, як складання чисел з різними знаками і віднімання, стає складної задачей.

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

Щоб побудувати простіші схеми АЛУ запропоновані й активно застосовуються зворотний і додатковий коды.

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

— на 0).

Приклади записи.

Зображуване число Код. +1101 (+13) 0000 1101 (У прикладах коди). +1 011 101 (+93) 0101 1101 (зображуються). 1101 (-13) 1111 0010 (вісьмома цифрами).

Співставлення цієї запису із прямим кодом показує, що безпосередньо відновити абсолютну величину (модуль) негативного числа непросто. Проте, у тому коді як до позитивних, і до негативним числам можна використовувати одні й самі правила, а операцію А-В усунути операцією складання чисел Проте й «мінус В».

Подивимося, можна вважати послідовні числа під час переходу через ноль:

|Кількість |-2 |-1 |0 |+1 |+2 | |Код |11 101 |11 110 |0 |1 |10 |.

З прикладу видно, що перехід через нуль теж виглядає природним. Зазначена особливість тягне у себе й таке — в зворотному коді нуль зображують дві різняться комбінації: 0 (+0) і 11 111 (-0), що ускладнює апаратну реалізацію операций.

Для відновлення прямого коду негативного числа з зворотного коду треба все цифри, крім цифри, яка зображує знак числа, замінити на противоположные.

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

Інакше кажучи, процес побудови додаткового коду негативного числа може бути розбитий на два етапу — побудувати зворотний код, та був потім із нього побудувати дополнительный.

Проілюструємо це примере.

Кількість -> - 101 101.

Прямий код -> 1 101 101.

Зворотний код -> 1 010 010.

+1 Додатковий -> 1 010 011.

Приклади записи.

Зображуване число Код. +1101 (+13) 0000 1101 (У прикладах коди). +1 011 101 (+93) 0101 1101 (зображуються). 1101 (-13) 1111 0011 (вісьмома цифрами).

У додатковому коді, на відміну зворотного, нуль змальовується лише однієї комбінацією, та, крім цього, досить природно виходить перехід через нуль, якщо пам’ятати, що будь-який число, більше іншого на 1, виходить при додаванні до цього іншому 1 по правилам складання. Що стосується додатковому коду це і є так, якщо взяти до відома, що розрядність слова фіксована, і одиниця переносу зі старшого розряду втрачається, бо її нікуди записать:

2 -> 11 101 + 1 = 11 110.

1 -> 11 110 + 1 = 11 111.

0 -> 11 111 + 1 = (1)00000 (перенесення отбрасывается).

+1 -> 0 + 1 = 1.

+2 -> 1 + 1 = 10.

Для відновлення прямого коду числа з додаткового потрібно повністю повторити (і у такому самому порядку!) дії, які використовувалися під час перекладу з прямого в додатковий код: спочатку все цифри, крім цифри, яка зображує знак, замінити на протилежні, та був додати 1.

Основним гідністю додаткового коду і те, що він однаково реалізуються операції складання чисел різних знаків (алгебраїчне складання), а операцію вирахування можна зводити до операції складання заміною знака вычитаемого на зворотний. Згадавши, що у пам’яті ЕОМ числа зберігаються у прямому коді, стане зрозуміло, що заміна знака вычитаемого можуть виконати надзвичайно просто (заміною знака вересня прямому коді на зворотний). Саме з зазначеної причини додатковий код застосовується частіше обратного.

1.4.2. Складання і віднімання чисел.

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

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

Приклад 1. Скласти числа +12 і -5.

а) У зворотному коде.

Десяткова форма -> +12 -5.

Двоичная форма -> +1100 -101.

Прямий код -> 1 100 10 000 101.

Зворотний код -> 1 100 11 111 010.

Выполним складання в столбик:

0 0 0 0 1 1 0 0.

1 1 1 1 1 0 1 0 =============== (1) 0 0 0 0 0 1 1 0.

+ 1 (Додавання 1 переноса).

==============.

0 0 0 0 0 1 1 1.

Отже, результат у протилежному коді = 111.

Оскільки знаковий розряд дорівнює 0, результат позитивний, і, отже, запис коду числа збігаються з записом прямого коду. Тепер можна відновити алгебраїчну запис результату. Він дорівнює +111 (незначні нулі відкинуті), чи десяткової формі +7.

Перевірка (+12−5=+7) показує, що результати верный.

а) У додатковому коде.

Десяткова форма -> +12 -5.

Двоичная форма -> +1100 -101.

Прямий код -> 1 100 10 000 101.

Зворотний код -> 1 100 11 111 010.

+1.

Додатковий код -> 1 100 11 111 011.

Виконаємо складання в столбик:

0 0 0 0 1 1 0 0.

1 1 1 1 1 0 1 1.

============ (1) 0 0 0 0 0 1 1 1.

(Перенесення игнорируется).

Отже, результат в додатковому коді = 111.

Оскільки знаковий розряд дорівнює 0, результат позитивний, і, отже, запис коду числа збігаються з записом прямого коду. Тепер можна відновити алгебраїчну запис результату. Він дорівнює +111 (незначні нулі відкинуті), чи десяткової формі +7.

Перевірка (+12−5=+7) показує, що результати верный.

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

1.5. Кодування чисел в ЭВМ.

У ЕОМ застосовується найчастіше одне з двох форм уявлення чисел:. з фіксованою коми;. з плаваючою запятой.

Числа видаються в машинному слові, що має для конкретної ЕОМ завжди фіксований число розрядів (бітов). Ця кількість є одним із найважливіших характеристик будь-який ЕОМ і називається розрядністю машини. Різні розряди слова при кодування команд і передачею даних мають незбіжні функціональні призначення. Зблизька своїх функцій використовують також термін «разрядная сітка машины».

1.5.1. Числа з фіксованою запятой.

У числах з фіксованою коми становище коми в розрядної сітці машини заздалегідь зумовлено всім чисел назавжди і безповоротно. Тож у коді числа кома неможливо позначається. У багатьох машин місце коми мається на увазі після останньої цифри (праворуч від неї). А числа — цілі. За необхідності представляти дробные числа з допомогою форми з фіксованою коми програміст повинен алгоритмічними засобами забезпечити використання множника, виконує функцію масштабирования (масштабного множителя).

Визначимо діапазон представимых чисел.

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

Тоді максимальне (по абсолютну величину) ціле дорівнюватиме 999 999 чи інакше 10**6−1. Позаяк в розрядної сітці машини для записи знака числа завжди передбачається один розряд, то тут для нашого випадку діапазон представимых чисел складе усі цілі числа, починаючи з -999 999 до +999 999, а кількість різних цілих — 2*10**6−1.

У двійкових ЕОМ їх розрядність визначається кількістю розрядів в слові. Тож якщо розрядність деякою ЕОМ дорівнює 16, то один розряд відводиться для кодування знака числа, інші ж 15 — для записи його величини. У цьому максимальне по модулю ціле значення в машинному слові буде одно 2**15−1, що становитиме 32 767. (Подивіться діапазон цілих (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) визначено дві операции:

divx — целочисленное розподіл, щоб у ролі результату представляється ціла частину приватного, mod — залишок від розподілу цілих (розподіл по модулю), у якому як результату представляється цілий залишок від розподілу, по абсолютну величину менший делителя.

Примеры:

5 divx 3 = 1.

5 mod 3 = 2.

1.5.2. Числа з плаваючою запятой.

У формі з плаваючою коми число представляється двома компонентами: мантиссой і порядком. Мантиса використовується для записи цифр числа, а порядок — для вказівки становища запятой.

Разрядная сітка машини у разі ділиться сталася на кілька частин: один розряд — для кодування знака числа (це найстарший, лівий, розряд слова); M розрядів — для записи мантиси; Р розрядів — для записи порядку (з урахуванням її знака).

Місце Розташування коми у своїй теж суворо фіксується: вважається, що мантиса є і кількість, менше одиниці, але таке, в якому перша цифра після коми всім абсолютно чисел відрізняється від нуля (єдиний виняток становить число 0). Така форма уявлення мантиси називається нормализованной. Інакше кажуть, що мантиса нормалізував (приведено до виду: 1 < M.

Показати весь текст
Заповнити форму поточною роботою