Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsia1 (1).doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
7 Мб
Скачать
☆

Формы представления чисел

Для выполнения арифметических действий над числами компьютер должен "уметь" оперировать положительными и отрицательными числами различных поряд­ков. Числа представляются фиксированными или переменными в определенных преде­лах количествами разрядов. Для представления чисел различных порядков применя­ются две формы изображения: экспоненциальная с плавающей запятой (точкой) и ес­тественная с фиксированным положением запятой (точкой). Экспоненциальная форма преставления с плавающей запятой основывается на изображении чисел в виде , соответствующим записи , где — основание системы, — целое число, называемое порядком числа —мантисса числа , причем обычно При такой записи положение запятой в мантиссе определяется величи­ной порядка . С изменением порядка в большую или меньшую сторону запя­тая соответственно перемещается влево или вправо, то есть "плавает" в изображении числа. В разрядной сетке ЭВМ число, соответствующее подобному представлению, записывается в виде пары чисел и . Данное представление носит название пред­ставления чисел с плавающей запятой (точкой). Если в записи числа модуль мантиссы находится в пределах , то число называется нормализованным, в противном случае—ненормализованным. Например, двоичное число 0.110100 10100— нормализо­ванное, а 0.001101 10110 —ненормализованное. Во втором случае , и имеет ме­сто нарушение нормализации вправо1. Если же в процессе вычислений значение ман­тиссы , то имеет место нарушение нормализации влево. Этот случай может возник­нуть при сложении нормализованных чисел одинакового порядка, в результате чего слева от запятой появляется 1. Нормализованное представление чисел позволяет сохранять в разрядной сетке большее количество значащих цифр и, следовательно, по­вышает точность вычислений, а также упрощает действия над порядками и мантис­сами. Однако может возникнуть необходимость в выполнении действий и над ненор­мализованными числами. Поэтому в системах команд современных ЭВМ предусмат­ривается выполнение действий, как с автоматической нормализацией результатов опе­раций, так и без нормализации. Нормализация заключается в сдвиге мантиссы влево или вправо таким образом, чтобы она удовлетворяла приведенному выше неравенству. Одновременно со сдвигом соответственно уменьшается или увеличивается порядок.

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

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

В обоих случаях имеет место представление, называемое "с фиксированной за­пятой". Если запятая зафиксирована слева, то арифметические действия выполняются над двоичными числами, выраженными в виде правильных дробей и независимо от их величины обычно представленными одинаковым количеством разрядов, разрядную сетку машины. В результате действий могут получаться двоичные числа, по абсолют­ной величине большие 0.1…1, или меньшие 0.0...01 (соответственно в десятичной сис­теме 0.999... и 0.000... 01). Появление чисел, по абсолютной величине больших еди­ницы или равных единице, называется переполнением разрядной сетки. Без специаль­ных мер коррекции такие результаты не могут использоваться для дальнейших вычис­лений, поскольку теряются старшие значащие разряды чисел. Числа, по абсолютной величине меньшие единицы младшего разряда разрядной сетки, называются машин­ным нулем. Диапазон представления правильных l- разрядных двоичных дробей зна­чительно меньше, чем у чисел с плавающей точкой, имеющих такую же l-разрядную мантиссу. Во многих задачах величины, которыми приходится оперировать при вы­числениях, либо являются целыми числами, либо их удобно в расчетах представлять целыми. К таким задачам, например, относятся статистические и различные экономи­ческие задачи. Адреса ячеек также являются целыми числами, над которыми могут производиться арифметические операции. Поэтому в современных универсальных ма­шинах часто предусматривается возможность выполнения действий над целыми чис­лами. Такие действия могут выполняться как над двоичными числами, так и непосред­ственно над десятичными, представленными в двоично-десятичном коде. Целые числа при этом выравниваются по младшим разрядам (десятичные по младшим тетрадам), то есть, запятая подразумевается фиксированной справа. Диапазон представления целых двоичных чисел в - разрядной сетке заключен в пределах . Например, при в десятичной системе выполняется неравенство . Непосредствен­ное применение в компьютерах десятичной арифметики особенно вы­годно, когда производятся сравнительно несложные вычисления над большими масси­вами исходных данных. В этих случаях может быть существенным выигрыш во вре­мени, затрачиваемом на вычисления, из-за отсутствия переводов чисел из десятичной системы счисления в двоичную и обратно.

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

Для кодирования знаков двоичных чисел используются дополнительно вводи­мые разряды, называемые знаковыми, в которых знак "плюс" изображается цифрой 0, а знак "минус" — цифрой 1. Как при естественной, так и при экспоненциальной форме представления чисел код знака обычно располагается перед кодом числа слева. Если пронумеровать двоичные позиции сетки машины слева направо, начиная с нуля, до , то знаковому разряду будет соответствовать нулевая позиция. При естественной форме представления чисел, по величине меньших единицы, сразу за знаковым разря­дом (вправо от запятой) следуют старшие разряды мантиссы. Например, двоичные числа +0.101 и -0.111 при закодированных знаках будут иметь вид: и 2 При экспоненциальной форме представления чисел помимо разряда для изображения знака мантиссы необходим разряд для изображения знака порядка. Для удобства вы­полнения операций над порядками они обычно кодируются следующим образом [2]: если для размещения кодов порядков в разрядной сетке отводится разряд, то отрицательные и положительные порядки представляются увеличенными на , т.е. Тогда порядки в диапазоне , оказываются записанными в виде Если , то все порядки в диапазоне -1000000 +0111111 (-64+63) в смещенном виде будут кодироваться положительными числами 0000000 до 1111111. Коды отрицательных порядков будут иметь цифру 1 в старшем разряде 7-раз­рядного двоичного кода, положительных — цифру 0; нулевому порядку будет соответ­ствовать код 1000000. Во избежание путаницы смещенный порядок называют характе­ристикой числа. С подобным представлением вещественных чисел оперируют процес­соры семейства x86 фирмы Intel и их аналоги. Так как все характеристики представля­ются положительными числами, их сравнение выполняется просто: из характеристики первого слагаемого, например, всегда вычитается характеристика второго слагаемого. С учетом вышеизложенного число, например, -32756 в форме с плавающей запятой в виде 32-раз-рядного двоичного кода может быть представлено, как показано рисунке.

Мантисса изображена нормализованной в шестнадцатеричной системе счисле­ния, характеристика . Весь код в шестнадцатеричной системе счисления можно записать как С5 7FF400.

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

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

Пусть требуется из 84 вычесть 29. Вычислим дополнение 29 до 100, то есть до (мы оперируем с двухразрядными числами и основание системы счисления равно 10). Получим 100-29=71. Далее вычислим сумму 85+71= 155. Перенос в старший раз­ряд игнорируем (числа двухразрядные) и результат получаем в прямом коде — 55. Те­перь найдем разность 29 и 84. Дополнение 84 до 100 равно 100-84=16. Вычислим сумму 29+16=45. Отсутствие переноса сигнализирует о том, что вычитаемое больше уменьшаемого, и результат получается в дополнительном коде (дополнении до ста, то есть отрицательный). Тогда 100-45=55, и окончательный результат равен –55. Приве­денный пример показывает, как операцию вычитания двух чисел можно свести к сло­жению.

При реализации вычитания двоичнных чисел на ЭВМ, вычитаемое обычно представляют в дополнительном или обратном кодах.

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

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