Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по ОиФК.docx
Скачиваний:
8
Добавлен:
15.04.2019
Размер:
691.83 Кб
Скачать

8. Арифметические действия над двоичными числами со знаком. Переполнение. Расширение знаком.

Операция сложения:

В дополнительном коде знаковый разряд участвует в операции сложения наравне с значащими разрядами.

Переполнение:

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

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

  1. Когда складываются два положительных числа

  2. Когда складываются два отрицательных числа

Формальные признаки переполнения:

  1. Переполнение возникает, когда есть перенос в знаковый разряд, а из знакового разряда нет переноса.

  2. Переполнение возникает, когда есть перенос из знакового разряда, а в знаковый разряд нет переноса.

Расширение знака:

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

В процессорах INTEL сущ. Следующие команды расширения знаков:

CBW – convert byte to word (al →ax)

CWD – convert word to doubleword (ax → dx:ax)

CDQ – convert doubleword to quaterword (eax → edx:eax)

В результате расширения знака значение числа не изменяется.

Операция вычитания

Для вычитания одного числа (вычитаемого) из другого числа (уменьшаемого) необходимо взять дополнение вычитаемого и прибавить его к уменьшаемому.

Под дополнением понимается вычитаемое, взятое с противоположным знаком и представленное в дополнительном коде.

9. Формат чисел с плавающей запятой (пз)

Плавающая запятая — форма представления действительных чисел, в которой число хранится в форме мантиссы и показателя степени. При этом число с плавающей запятой имеет фиксированную относительную точность и изменяющуюся абсолютную. Наиболее часто используемое представление утверждено в стандарте IEEE 754.

Структура числа. Число с плавающей запятой состоит из:

М антиссы (выражающей значение числа без учёта порядка)

Знака мантиссы (указывающего на отрицательность или положительность числа)

Порядка (выражающего степень основания числа, на которое умножается мантисса)

Знака порядка

Нормальная форма и нормализованная форма

Нормальной формой числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) находится на полуинтервале [0; 1). Число с плавающей запятой, находящееся не в нормальной форме, теряет точность по сравнению с нормальной формой. Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001×100, 0,001×10−1, 0,01×10−2, 0,1×10−3), поэтому распространена (особенно в информатике) также другая форма записи —

нормализованная, в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (не включительно), а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно). В такой форме любое число (кроме 0) записывается единственным образом.

Недостаток заключается в том, что в таком виде невозможно представить 0, поэтому представление чисел в информатике предусматривает специальный признак (бит) для числа 0.

Плюсы – при таком расположении запятой мы никогда не храним лишних нулей, в результате в фиксированную по размеру мантиссу влезает максимум значащих разрядов. Другое дело, что нам может не хватить места для показателя степени: 0,0089 * 10-8 = 8,900 * 10-11 (потребовалось два разряда).

Так как старший разряд (целая часть числа) мантиссы двоичного числа (кроме 0) в нормализованном виде равен «1», то при записи мантиссы числа в эвм старший разряд можно не записывать, что и используется в стандарте IEEE 754. В позиционных системах счисления с основанием большим, чем 2 (в троичной, четверичной и др.), этого свойства нет.

Согласно существующим стандартам на форматы, числа с плавающей запятой хранятся в нормализованном виде практически всегда.

Традиционное исключение – слишком маленькие по модулю числа. Например, если минимальный показатель степени -9 то, если формат позволяет, 8,900 * 10-11 будет записано как 0,089 * 10-9. Но эта ситуация рассматривается именно как исключение.