Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная по ЭВМ / 2_МУ_Орг-слож-выч.doc
Скачиваний:
15
Добавлен:
20.02.2016
Размер:
81.92 Кб
Скачать

Лабораторная работа 2 сложение и вычитание целых чисел

    1. Цель работы

Исследование особенностей операций сложения и вычитания целых чисел (знаковых и беззнаковых) в ЭВМ

    1. Дополнительный код

2.2.1 В ПК делается различие между целыми числами без знака (неотрицательными) и знаковыми [11].

Целые числа со знаком записываются в дополнительном коде по правилу:

X , если X ≥ 0

2

Доп (x) =

k - | X | , если X < 0, ( 1 )

где k – общее количество разрядов,

отведенных под число X

Если k = 8 (байт), то правило конкретизируется:

( 2 )

Доп (x) =

X , если 0 ≤ X ≤ 127

256 - | X | , если -128 ≤ X ≤ -1

ПРИМЕРЫ

  1. Дополнительным кодом числа -6 является:

байт FAh (= 256 – 6 = 250 (10) = FA (16))

слово FFFA (16)

двойное слово FFFFFFFA (16).

  1. Дополнительным кодом числа +98 является:

байт 98 (10) = 62 (16)

слово 0062 (16) .

Левый бит дополнительного кода играет роль знакового: для неотрицательных чисел он равен 0, для отрицательных 1.

2.2.2 Для перевода числа из дополнительного кода в обычное представление необходимо:

  1. сравнить дополнительный код доп (X) с величиной наибольшего неотрицательного числа рассматриваемого размера (типа), равного ( 2k-1 – 1):

е

( 3 )

сли доп (X)  2 k-1 – 1, то X = доп (X)

если доп (X) > 2 k-1 – 1, то |X| = 2 k – доп (X), а X отрицательно.

В приведенных формулах |X| - модуль (абсолютная величина) числа, а k – общее количество разрядов в ячейках, отведенных под число X. Если k = 8 (рассматривается байт), то чтобы получить число по его дополнительному коду нужно сравнить дополнительный код доп (X) с числом 127:

е

( 4 )

сли доп (X)  127, то X = доп (X)

если доп (X) > 127 то |X| =256 – доп (X), а X - отрицательно.

ПРИМЕР

Дополнительный код числа размером байт равен 3. Определить величину числа.

Так как 3  127, то X = доп (Х) = 3.

ПРИМЕР

Дополнительный код числа размером байт равен 253. Определить величину числа.

Так как 253 > 127, значит число отрицательное, а его модуль определяют по формуле:

|X| = 256 – доп (Х) = 256 – 253 = 3

Таким образом, X = - 3.

    1. Беззнаковые целые числа

2.3.1 Сложение

Беззнаковые числа складываются по правилам сложения двоичных чисел. Однако возникает проблема: что делать, если сумма получится очень большой - такой, что она не умещается в отведенную ячейку? Например, при сложении байтовых чисел 250 и 10 получится число 260 (100000100b – 9 разрядов), которое не "влезает" в ячейку размером в байт.

В этом случае ошибка не фиксируется, левая единица (единица переноса) отбрасывается, и в качестве ответа выдается искаженная сумма (в рассматриваемом примере ответом будет байт 0000 0100b, т. е. число 4). При этом во флаг переноса CF записывается 1. Это сигнал о том, что получилась неправильная сумма (если переноса не было, то в CF записывается 0).

Отбрасывание 1 в разряде номер 8 (девятая единица по счету справа) равноценно вычитанию числа 1 0000 0000 b (= 28 = 256).

ПРИМЕР

Сложить беззнаковые числа 18 и 200 ( формат – байт ).

Сумма 18 + 200 = 218 <= 255, следовательно, сумма «помещается» в байт, результат верен в математическом смысле и флаг CF = 0 .

ПРИМЕР

Сложить беззнаковые числа 58 и 200 ( формат – байт ).

Сумма 58 + 200 = 258 больше 255 , то есть, байта «не хватает», следовательно, бит номер 8 «теряется», что равноценно вычитанию из суммы числа 256. Сумма будет фиксирована как (58 + 200) – 256 = 2.

Так как с точки зрения математики получен неправильный результат, флаг CF = 1 (был перенос).

2.3.2 Вычитание

Объявляя, что та или иная операция выполняется с данными определенного типа, понимают, что и операнды, и результат являются данными этого типа.

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

Если выполняется вычитание Х – У и при этом:

  1. Х ≥ У, выполняется обычное вычитание;

  2. Х < У, тогда числу Х дается "заем" единицы, то есть к числу Х прибавляется величина 2k , (при K = 8 - байт - прибавляется число 1 0000 0000 (2) = 28 = 256) и только после этого производится вычитание. Полученное таким образом число и объявляется разностью. Факт произведенного "заема" фиксируется тем, что во флаг переноса CF записывается 1.

ПРИМЕР

Определить разность 1-2 (размер – байт, числа беззнаковые).

Так как 1 < 2 , то выполняется «заем» и только после этого производится вычитание: ( 1 + 256 ) – 2 = 255.

Число 255 объявляется результатом вычитания 1-2. При этом ошибка не фиксируется, но во флаг переноса CF заносится 1, что сигнализирует о неправильном результате.

Соседние файлы в папке Контрольная по ЭВМ