Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab№2.doc
Скачиваний:
9
Добавлен:
02.06.2015
Размер:
198.66 Кб
Скачать

Лабораторна робота №2 Тема: Переведення чисел. Доповнювальний, прямий і зворотній код. Операції над цілими числами у двійковій системі числення. Теоретичні положення

1. Операції над цілими числами у двійковій системі числення. Доповнювальний, прямий і зворотній код.

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

Таблиця 1. - Правила виконання арифметичних дій над двійковими числами

Двійкове додавання

Двійкове віднімання

Двійкове множення

0+0=0

0+1=1

1+0=1

1+1=10

0-0=0

1-0=1

1-1=0

10-1=1

0*0=0

0*1=0

1*0=0

1*1=1

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

Наприклад,

     1111101

    + 101101.01

         11011.01

      -------------------

     1001000.10

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

Наприклад,

         10101.11

     -     1011.01

       ---------------

           1010.10

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

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

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

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

Виділяють три основних способи представлення від’ємних чисел:

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

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

  • додатковий код, який утворюється шляхом додавання 1 до молодшого біта оберненого коду.

Приклад. Розглянемо число -3. Двійковим еквівалентом відповідного додатного числа 3 є 00000011.

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

Обернений код. Замінимо кожний біт на протилежний (1 на 0; 0 на 1); результатом буде 11111100.

Додатковий код. Додамо 1 до оберненого коду; в результаті вийде 11111101. Зверніть увагу, що якщо розглядати послідовність 11111101 як беззнакове, а не як знакове число, вона інтерпретується як додатнє число 253.

         

Приклад 1. Числа А, –А, С и –С представити в прямому, оберненму (зворотньому), доповнюваному кодах.

А = 30710 = 1001100112 С = 9110 = 10110112

[A]пр = [A]об = [A]дк = 0|000000100110011

[–A]пр = 1|000000100110011

[–A]об = 1|111111011001100

[–A]дк = 1|111111011001100+1 = 1|111111011001101

[C]пр = [C]об = [C]дк = 0|000000001011011

[–C]пр = 1|000000001011011

[–C]об = 1|111111110100100

[–C]дк = 1|111111110100100+1 = 1|111111110100101

Приклад 2. Обчислити: А + B, A – B, –A – B. Нехай А=16010, B=4510.

[A]дк = 0|000000010100000

[–A]дк = 1|111111101100000

[B]дк = 0|000000000101101

[–B]дк = 1|111111111010011

А + B

A – B

–A – B

+

0|000000010100000

+

0|000000010100000

+

1|111111101100000

0|000000000101101

1|111111111010011

1|111111111010011

0|000000011001101

0|000000001110011

1|111111100110011

Приклад 3. Виконати додавання чисел, представленних в машинних кодах: A+C; –A+C; A+(– C); –A+(– C).

A = 30710 =1001100112 С = 9110 = 10110112

[A]дк = 0|000000100110011

[–A]дк = 1|111111011001101

[C]дк = 0|000000001011011

[–C]дк = 1|111111110100101

А + C

–A + C

+

0|000000100110011

+

1|111111011001101

0|000000001011011

0|000000001011011

0|000000110001110

1|111111100101000

А + (– C)

–A + (– C)

+

0|000000100110011

+

1|111111011001101

1|111111110100101

1|111111110100101

0|000000011011000

1|111111001110010

Зауваження. В ЕОМ операції віднімання, множення, ділення здійснюються за допомогою операції додавання. Наприклад, при відніманні від'ємник записується у доповняльному коді і віднімання заміняється додаванням.

Приклад 4: 23 + 22 = 45

Приклад 5: 23 - 13 = 23 + (-13 ) = 10

(-13)10 = (1 0001101)пр. = (1 1110010)об. = (1 1110011)доп.

Приклад 6: 7 - 13 = 7 + (-13) = -6

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

1. відняти від доповняльного кода 1: 11111010дк. - 00000001 = 11111001об.

2. проінвертувати обернений код для переходу до прямого: 10000110пр.

Приклад 7: (- 7 – 13) = (-7) +(-13) = -20

(-7)10

Прямий код:

1 0000111

Обернений код:

1 1111000

Доповняльний код:

1 1111001

(-13)10

Прямий код:

1 0001101

Обернений код:

1 1110010

Доповняльний код:

1 1110011

1 0010100пр. - прямий двійковий код числа ( -20 )10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]