сложение в модифицированном дополнительном коде

Сложение в модифицированном дополнительном коде

2. Основы машинной арифметики с двоичными числами.

Любая информация (числа, команды, записи и т. п.) представляется в ЭВМ в виде двоичных кодов фиксированной или переменной длины. Отдельные элементы двоичного кода, имеющие значение 0 или 1, называют разрядами или битами. Двоичный код состоящий из 8 разрядов носит название байта. Для записи чисел также используют 32-разрядный формат (машинное слово), 16-разрядный формат (полуслово) и 64-разрядный формат (двойное слово).

В ЭВМ в целях упрощения выполнения арифметических операций применяют специальные коды для представления чисел. Использование кодов позволяет свести операцию вычитания чисел к арифметическому сложению кодов этих чисел. Применяются прямой, обратный и дополнительный коды чисел. Прямой код используется для представления отрицательных чисел в запоминающем устройстве ЭВМ, а также при умножении и делении. Обратный и дополнительный коды используются для замены операции вычитания операцией сложения, что упрощает устройство арифметического блока ЭВМ. К кодам выдвигаются следующие требования:
1) Разряды числа в коде жестко связаны с определенной разрядной сеткой.
2) Для записи кода знака в разрядной сетке отводится фиксированный, строго определенный разряд.
Например, если за основу представления кода взят один байт, то для представления числа будет отведено 7 разрядов, а для записи кода знака один разряд.

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

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

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

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

Для числа +1101:

Прямой кодОбратный кодДополнительный код
0,00011010,00011010,0001101

2.2 Особенности сложения чисел в обратном и дополнительном кодах.

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

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

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

Сложить двоичные числа X и Y в обратном и дополнительном кодах.

1) Сложим числа, пользуясь правилами двоичной арифметики:

2) Сложим числа, используя коды:

Прямой кодСложение в обратном
коде
Сложение в дополнительном
коде

1) Сложим числа, пользуясь правилами двоичной арифметики:

2) Сложим числа, используя коды:

Прямой кодСложение в обратном
коде
Сложение в дополнительном
коде

2.3 Модифицированные обратный и дополнительный коды.

При переполнении разрядной сетки, происходит перенос единицы в знаковый разряд. Это приводит к неправильному результату, причем положительное число, получившееся в результате арифметической операции может восприниматься как отрицательное (так как в знаковом разряде «1») и наоборот.

Рассмотрим предыдущий пример, выполнив сложение в модифицированном обратном коде:

1) Переведем X и Y в модифицированный дополнительный код:

Обычная записьМодифицированный
обратный
код
Модифицированный дополнительный
код
X= +101001

2) Выполним сложение:

2) Перевести X и Y в прямой, обратный и дополнительный коды. Сложить их в обратном и дополнительном кодах. Результат перевести в прямой код. Проверить полученный результат, пользуясь правилами двоичной арифметики.

3) Сложить X и Y в модифицированном обратном и модифицированном дополнительном восьмиразрядных кодах. В случае появления признака переполнения увеличить число разрядов в кодах и повторить суммирование. Результат перевести в прямой код и проверить, пользуясь правилами двоичной арифметики.

Источник

Модифицированные коды

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

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

Рассмотрим такой пример:

То есть получаем неправильный результат как по знаку, так и в цифровой части.

Рассмотрим ещё один пример:

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

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

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

Существо модифицированных кодов состоит в том, что к знаковому разряду добавляется ещё один разряд:

» + » ставится в соответствие 00

» – » ставится в соответствие 11

Тогда, по определению модифицированным дополнительным кодом числа называется

сложение в модифицированном дополнительном коде

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

сложение в модифицированном дополнительном коде

Так как в сложении по-прежнему участвуют только числа меньше единицы, то

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

искажает младший знаковый разряд.

При этом различают два типа переполнения :

Источник

Модифицированные обратный и дополнительный коды.

Например: X= 0,1010110 Y= 0,1101000 X+Y= 1,0111110

При переполнении разрядной сетки, происходит перенос единицы в знаковый разряд. Это приводит к неправильному результату, причем положительное число, получившееся в результате арифметической операции может восприниматься как отрицательное (так как в знаковом разряде «1») и наоборот.

Здесь X и Y – коды положительных чисел, но ЭВМ воспринимает результат их сложения как код отрицательного числа (“1” в знаковом разряде). Для обнаружения переполнения разрядной сетки вводятся модифицированные коды.

Модифицированный обратный код – в нем под знак числа отводится не один, а два разряда. Форма записи чисел в модифицированном обратном коде выглядит следующим образом:

1) для положительного числа

X= сложение в модифицированном дополнительном коде; X сложение в модифицированном дополнительном коде= сложение в модифицированном дополнительном коде;

2) для отрицательного числа

X= сложение в модифицированном дополнительном коде; X сложение в модифицированном дополнительном коде= сложение в модифицированном дополнительном коде;

В модифицированном обратном и модифицированном дополнительном кодах под знак числа отводится не один, а два разряда: «00» соответствует знаку «+», «11» – знаку «-«. Любая другая комбинация (“01” или “10”), получившаяся в знаковых разрядах служит признаком переполнения разрядной сетки. Сложение чисел в модифицированных кодах ничем не отличается от сложения в обычных обратном и дополнительном кодах.

Рассмотрим предыдущий пример, выполнив сложение в модифицированном обратном коде:

X= 00,101011 Y= 00,110100 X+Y= 01,011111

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

Модифицированный дополнительный код также рассматривает два знаковых разряда, а во всем остальном ничем не отличается от обычного дополнительного кода, то есть:

1) для положительного числа

X= сложение в модифицированном дополнительном коде; X сложение в модифицированном дополнительном коде= сложение в модифицированном дополнительном коде;

2) для отрицательного числа

Пример. Даны два числа: X=101001 и Y= –11010. Сложить их в дополнительном и модифицированном дополнительном кодах.

1) Переведем X и Y в дополнительный и модифицированный дополнительный код:

Обычная записьОбратный кодДополнительный код
X=+0101001 Y=–0011010Xобр=0,0101001 Yобр=1,1100101Xдоп=0,0101001 Yдоп=1,1100110
Обычная записьМод. обратный кодМод. дополнительный код
X=+101001 Y=–011010 сложение в модифицированном дополнительном коде=00,101001 сложение в модифицированном дополнительном коде=11,100101 сложение в модифицированном дополнительном коде=00,101001 сложение в модифицированном дополнительном коде=11,100110

2) Выполним сложение:

сложение в модифицированном дополнительном коде сложение в модифицированном дополнительном кодеXдоп= 0,0101001 Yдоп= 1,1100110 1)0,0001111 отбрасывается (X+Y)доп= 0,0001111X сложение в модифицированном дополнительном коде= 00,101001 Y сложение в модифицированном дополнительном коде= 11,100110 1) 00,001111 отбрасывается (X+Y) сложение в модифицированном дополнительном коде= 00,001111

Переполнения нет (в знаковых разрядах “00”), поэтому результаты, полученные в обычном и модифицированном кодах совпадают (X+Y=1111).

Упражнения 2.

1) Записать число в прямом, обратном и дополнительном кодах:

а) 11010; б) –11101; в) –101001; г) –1001110.

2) Перевести X и Y в прямой, обратный и дополнительный коды. Сложить их в обратном и дополнительном кодах. Результат перевести в прямой код. Проверить полученный результат, пользуясь правилами двоичной арифметики.

а) X= –11010; Y= 1001111;б) X= –11101; Y= –100110;в) X= 1110100; Y= –101101;
г) X= –10110; Y= –111011;д) X= 1111011; Y= –1001010;е) X= –11011; Y= –10101.

Сложить X и Y в модифицированном обратном и модифицированном дополнительном восьмиразрядных кодах. В случае появления признака переполнения увеличить число разрядов в кодах и повторить суммирование. Результат перевести в прямой код и проверить, пользуясь правилами двоичной арифметики.

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

При проектировании ЭВМ, создании инструментального и прикладного программного обеспечения разработчикам приходится решать вопрос о представлении в ЭВМ числовых данных. Для решения большинства прикладных задач обычно достаточно использовать целые и вещественные числа. Запись целочисленных данных в запоминающем устройстве ЭВМ не представляет затруднений: число переводится в двоичную систему и записывается в прямом коде. Диапазон представляемых чисел в этом случае ограничивается количеством выделенных для записи разрядов. Для вещественных данных обычно используются две формы записи: число с фиксированной точкой (ЧФТ) и число с плавающей точкой (ЧПТ).

Источник

Лекция 7: Способы представления чисел в ЭВМ. Сложение чисел в обратном и дополнительном кодах

Модифицированные дополнительный и обратный коды и их использование в операции алгебраического суммирования

В модифицированных кодах кодирование знака осуществляется 2-мя разрядами:

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

сложение в модифицированном дополнительном коде

сложение в модифицированном дополнительном коде

Эта избыточность, сохраняя все качества обычных дополнительного и обратного кодов, дополняет их способностью фиксировать переполнение.

Знаковые разряды результата «01» определяют положительное переполнение в операциях алгебраического суммирования, а «10» – отрицательное.

При этом основная методика выполнения операций алгебраического суммирования в обратном и дополнительном кодах не меняется:

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

Метод на основе логического преобразования сигналов межразрядных переносов

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

сложение в модифицированном дополнительном коде

на примере восьмиразрядных операндов, где C7 – перенос в старший (знаковый) разряд, а C8 – перенос из знакового разряда.

Так при сложении операндов

сложение в модифицированном дополнительном коде

произойдет переполнение разрядной сетки результата:

сложение в модифицированном дополнительном коде

а при сложении операндов

сложение в модифицированном дополнительном коде

нет, так как в данном случае: сложение в модифицированном дополнительном коде.

Такой подход требует использования всего лишь одного дополнительного элемента – «сумма по модулю два» – в сумматоре и практически не снижает его быстродействия.

Краткие итоги

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

Источник

Модифицированные коды

сложение в модифицированном дополнительном коде сложение в модифицированном дополнительном коде сложение в модифицированном дополнительном коде сложение в модифицированном дополнительном коде

сложение в модифицированном дополнительном коде

сложение в модифицированном дополнительном коде

В отличие от обычных машинных кодов в модифицированных кодах под знак числа отводится два разряда: плюс изображается двумя нулями, а минус – двумя единицами. Это весьма удобно для выявления переполнения разрядной сетки, которое может получиться при сложении чисел с одинаковыми знаками.

Пример 1. Числа А2= + 0.10101 и А2 = – 0.10101представить в обратном и дополнительном

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

Пример 2. Сложить в модифицированном обратном коде двоичные числа А и В при условии: А >0, В > 0, А + В > 0.

сложение в модифицированном дополнительном коде

Знак 01 говорит о том, что получен положительный результат, а перенос из старшего разряда в знаковый указывает на то, что произошло переполнение разрядной сетки. Следовательно, истинный результат получен в прямом коде и равен:

Пример 3. Сложить в модифицированном обратном коде двоичные числа А и В при условии: А

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

Пример 4. Сложить в модифицированном обратном коде

сложение в модифицированном дополнительном коде

Сложение чисел в модифицированном дополнительном кодеосуществляется по правилам двоичной арифметики. Единица переноса, возникающая в старшем знаковом разряде суммы, отбрасывается. Знаковым разрядом числа является второй слева от запятой разряд; первый разряд служит для анализа переполнения разрядной сетки.

Пример. Сложить в модифицированном дополнительном коде двоичные числа А и В при условии, что оба числа положительные:

сложение в модифицированном дополнительном коде

Сложить в модифицированном дополнительном коде двоичные числа А и В при условии, что одно слагаемое положительное число А > 0, второе слагаемое число отрицательное:

сложение в модифицированном дополнительном коде

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

сложение в модифицированном дополнительном коде

Результат показывает, что сумма – число отрицательное, а разрядная сетка переполнена (1 0). Переведем дополнительный код в прямой и получим

сложение в модифицированном дополнительном коде

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *