|
||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Правила получения кодовПрямой код. Все цифровые разряды остаются неизменными, кодируется только знак числа (нулем). В этом формате в ЭВМ хранятся все положительные числа. Таким образом, получается, что для положительного числа прямой (ПК), обратный (ОК) и дополнительный (ДК) коды – одинаковы. Пример: без знака 5(10) = 0000101(2); с учетом знака - 0.0000101 ПК. Естественно, что никакая разделительная точка между знаком и значащей частью в ЭВМ не ставится. Здесь она поставлена для большей наглядности. Обратный код. Используется для представления в ЭВМ отрицательных чисел. Код получается инвертированием всех цифр абсолютной величины числа: нули заменяются единицами, единицы – нулями. Например, абсолютное значение числа -5 есть 0.0000101. Обратный код – 1.1111010. Дополнительный код. Используется как альтернативный код для представления отрицательных чисел. Для получения ДК отрицательного числа необходимо образовать ОК числа и к полученному ОК числа арифметически прибавить 1.
Например: ПК (-5): 1.0000101 ОК (-5): 1.1111010 ДК (-5): 1.1111011
Операция сложения (вычитания) осуществляется в ОК и ДК. Особенности операций с фиксированной точкой: 1. Операции выполняются поразрядно по правилам двоичной арифметики; 2. Знаковый разряд участвует со всеми остальными значащими разрядами по единым правилам; 3. Операции вычитания заменяются операциями сложения в дополнительных (обратных) кодах. Такая замена позволяет ускорить вычисления (не анализировать отдельно знак, модуль, выбирать тип операции и т.д.). Знаки операндов изначально не важны при вычитании. Они уже учтены в процессе представления чисел в памяти ЭВМ (в дополнительном либо обратном кодах); 4. Разрядность чисел должна быть одинакова. Однако существует опасность переполнения разрядной сетки. Эта ситуация контролируется по формальным признакам и представляет собой самостоятельную проблему; 5. При сложении в ОК перенос из знакового разряда арифметически добавляется к младшему разряду результата. В наихудшем варианте эта единица как итог сложения (в смысле времени выполнения операции) добавляется к получившейся сумме и может вновь вызвать дополнительные межразрядные переносы. Это увеличивает итоговое время реализации сложения. По этой причине на практике арифметические операции реализуются в дополнительных кодах, которым прибавление единицы не требуется. Естественно, что аппаратная реализация сумматоров для двух типов кодов различна. Для более простого запоминания правил выполнения арифметических операций в обратных и дополнительных кодах удобно воспользоваться следующими мнемоническими правилами. При этом необходимо четко разделить операции представления чисел в ЭВМ, выполнения операций сложения и вычитания, операцию правильного чтения данных из памяти. Этапы представлены в табл.5. В качестве примера в ней показаны операции сложения С+ =А+В, вычитания С- = А-В. Конкретные цифровые значения А=+3, В=-5. Комментарии сделаны только для дополнительного кода, но для обратного они аналогичны.
На этом этапе показано, что положительное число представляется в ПК самим числом со знаком 0 (об этом говорит мнемоническое правило в верхней части столбца положительных чисел). Для ДК правило предполагает прямое инвертирование всего ПК (т.е. числа вместе с нулем в знаковом разряде) и арифметическое сложение с 1. В этом есть некоторая неточность, т.к. отрицательное число все же в ПК должно иметь 1 в знаковом разряде. Но эта неточность и позволяет получить очень простое правило, хотя потребует учесть ее при выводе (чтении) числа.
На этапе сложения в ДК необходимо выполнить сложение всех разрядов, включая знаковый, по единым правилам. Если появится перенос из знакового разряда – его не учитывать. Об этом говорит стрелка в мнемоническом правиле в верхней части поля.
Вычитание числа, хранящегося в ячейке В, предполагает, что с содержимым ячейки В будет выполнена операция получения ДК по правилам представления чисел (все содержимое, включая знак ячейки В, будет проинвертировано и добавлена арифметически 1) и выполнено суммирование с содержимым ячейки А.
Чтение числа начинается с анализа знака. Если в знаковом разряде стоит нуль, то число записано в ПК и его следует читать напрямую. Если число имеет в знаковом разряде 1, значит число хранится в ДК и с числом необходимо выполнить операцию получения ДК (все, включая знак проинвертровать и арифметически прибавить 1). В результате преобразований в знаковом разряде получится 0, и здесь необходимо учесть допущения, используемые на этапе представления чисел в ДК. Само преобразование в ДК вызвано тем, что число было представлено с 1 в знаковом разряде и, следовательно, отрицательно. Поэтому знак минуса в числе потерять нельзя.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |