сложение двоичных чисел в обратном коде
Обратный и дополнительный коды двоичных чисел
Пример перевода
x1=10101-[x1]пр=010101
x2=-11101-[x2]пр=111101
x3=0,101-[x3]пр=0,101
x4=-0,111-[x4]пр=1,111
2) Обратный код числа, используется для выполнения арифметических операций вычитания, умножения, деления, через сложение. Обратный код положительного числа совпадает с его прямым кодом, обратный код отрицательного числа формируется по правилам: в знаковом разряде записывается “1”; цифровые значения меняются на противоположные.
3) Дополнительный код числа, имеет такое же назначение, как и обратный код числа. Формируется по следующим правилам: положительные числа в дополнительном коде выглядят также как и в обратном и в прямом коде, т.е. не изменяются. Отрицательные числа кодируются следующим образом: к обратному коду отрицательного числа (к младшему разряду) добавляется 1, по правилу двоичной арифметики.
Пример перевода
x1=10101-[x1]доп=010101
x2=-11101-[x2]обр=100010+1-[x2]доп=100011
x3=0,101-[x3]доп=0,101
x4=-0,111-[x4]обр=1,000+1-[x4]доп=1,001
Для выявления ошибок при выполнении арифметических операций используются также модифицированные коды: модифицированный прямой; модифицированный обратный; модифицированный дополнительный, для которых под код знака числа отводится два разряда, т.е. “+”=00; ”-”=11. Если в результате выполнения операции в знаковом разряде появляется комбинация 10 или 01 то для машины это признак ошибки, если 00 или 11 то результат верный.
Сложение двоичных чисел в обратном коде
Арифметические операции на сумматорах прямого, обратного и дополнительного кода
Все операции в ЭВМ выполняют над числами, представленными специальными машинными кодами. Их использование позволяет обрабатывать знаковые разряды чисел так же, как и значащие разряды, а также заменять операцию вычитания операцией сложения.
Каждому двоичному числу можно поставить в соответствие несколько видов кодов.
Различают следующие коды двоичных чисел: прямой (П), обратный (ОК) и дополнительный (ДК).
Прямой код двоичного числа образуется из абсолютного значения этого числа и кода знака (0 или 1) перед его старшим числовым разрядом.
Прямой код двоичного числа образуется по следующему алгоритму:
1) определить данное двоичное число: либо целое (порядок), либо правильная дробь (мантисса);
2) если это дробь, то цифры после запятой можно рассматривать как целое число;
3) если это целое и положительное двоичное число, то вместе с добавлением нуля в старший разряд число превращается в код.
Для отрицательного двоичного числа перед ним ставится единица.
число Y 2 = +0,11011012 → код числа Y пр = 01101101.
Подчеркиванием выделяют знаковые разряды.
Обратный код двоичного числа образуется по следующему алгоритму:
1) обратный код положительных чисел совпадает с их прямым кодом;
2) обратный код отрицательного числа содержит единицу в знаковом разряде числа, а значащие разряды числа заменяются инверсными, т. е. нули заменяются единицами, а единицы нулями.
Свое название обратный код получил потому, что коды цифр отрицательного числа заменены инверсными.
Наиболее важные свойства обратного кода чисел:
— сложение положительного числа С с его отрицательным значением в обратном коде дает так называемую машинную единицу МЕок = 1|1111, состоящую из единиц в знаковом и в значащих разрядах числа;
— нуль в обратном коде имеет двоякое значение.
Он может быть как положительным числом 0|0000, так и отрицательным 1|1111.
Двойственное представление нуля явилось причиной того, что в современных ЭВМ все числа представляются не обратным, а дополнительным кодом.
Обратный код положительного двоичного числа совпадает с прямым кодом, а для отрицательного числа нужно, исключая знаковый разряд, во всех остальных разрядах нули заменить единицами и наоборот.
Дополнительный код положительных чисел совпадает с их прямым кодом. Дополнительный код отрицательного числа представляет собой результат суммирования обратного кода числа с единицей младшего разряда (2 0 – для целых чисел, 2 –k – для дробных).
Основные свойства дополнительного кода:
· сложение дополнительных кодов положительного числа С с его отрицательным значением дает так называемую машинную единицу дополнительного кода:
т. е. число 10 (два) в знаковых разрядах числа;
Дополнительный код положительного числа совпадает с его прямым кодом. Дополнительный код отрицательного числа образуется путем прибавления единицы к обратному коду.
Арифметические действия в машинных кодах
Сложение, а также вычитание чисел в обратном или дополнительном кодах выполняют с использованием обычного правила арифметического сложения многоразрядных чисел.
Это правило распространяется и на знаковые разряды чисел.
Различие обратного и дополнительного кодов связано с последующими действиями с единицей переноса из старшего разряда, изображающего знак числа.
При сложении чисел в обратном коде эту единицу надо прибавить к младшему разряду результата, а в дополнительном коде единица переноса из старшего разряда игнорируется, так как дополнительный код из обратного получается как раз прибавлением единицы.
Сложение и вычитание машинных чисел
Операция вычитания приводится к операции сложения путем преобразования чисел в обратный или дополнительный код согласно таблице.
Сложение (вычитание) машинных чисел
Скобки в представленных выражениях указывают на замену операции вычитания операцией сложения с обратным или дополнительным кодом соответствующего числа.
Сложение двоичных чисел осуществляется последовательно, поразрядно в соответствии с таблицей.
При выполнении сложения цифр необходимо соблюдать следующий алгоритм:
1) слагаемые должны иметь одинаковое число разрядов.
Для выравнивания разрядной сетки слагаемых можно дописывать незначащие нули слева к целой части числа и незначащие нули справа к дробной части числа;
2) знаковые разряды участвуют в сложении так же, как и значащие;
3) необходимые преобразования кодов производят с изменением знаков чисел. Приписанные незначащие нули изменяют свое значение при преобразованиях по общему правилу;
4) при преобразовании единицы переноса из старшего знакового разряда, в случае использования ОК, эта единица складывается с младшим числовым разрядом.
При использовании ДК единица переноса теряется. Знак результата формируется автоматически, результат представляется в том коде, в котором представлены исходные слагаемые.
1. Сложить два числа: А10 = 7, В10 = 16.
Исходные числа имеют различную разрядность, необходимо провести выравнивание разрядной сетки:
Сложение в обратном или дополнительном коде дает один и тот же результат:
2. Сложить два числа: А10 = +16, В10 = –7 в ОК и ДК.
По таблице необходимо преобразование А +(–В), в которой второй член преобразуется с учетом знака:
При сложении чисел в ОК и ДК были получены переносы в знаковый разряд и из знакового разряда.
В случае ОК перенос из знакового разряда требует дополнительного прибавления единицы младшего разряда.
В случае ДК этот перенос игнорируется.
Пример сложения чисел +18 и –7 приведен в таблице.
Сложение двоичных чисел с использованием обратного кода(дополнительного кода).
Дополнительный код. Представление положительных и отрицательных чисел.
Дополнительный— наиболее распространённый способ представления отрицательных целых чисел в компьютерах. Он позволяет заменить операцию вычитания на операцию сложения и сделать операции сложения и вычитания одинаковыми для знаковых и беззнаковых чисел, чем упрощает архитектуру ЭВМ. Дополнительный код отрицательного числа можно получить инвертированием модуля двоичного числа (первое дополнение) и прибавлением к инверсии единицы (второе дополнение), либо вычитанием числа из нуля.
Дополнительный код положительного числа совпадает с его прямым кодом. Прямой код целого числа может быть получен следующим образом: число переводится в двоичную систему счисления, а затем его двоичную запись слева дополняют таким количеством незначащих нулей, сколько требует тип данных, к которому принадлежит число.
Например, если число 37(10) = 100101(2) объявлено величиной типа Integer (шестнадцатибитовое со знаком), то его прямым кодом будет 0000000000100101, а если величиной типа LongInt (тридцатидвухбитовое со знаком), то его прямой код будет 00000000000000000000000000100101. Для более компактной записи чаще используют шестнадцатеричное представление кода. Полученные коды можно переписать соответственно как 0025(16) и 00000025(16).
Дополнительный код целого отрицательного числа может быть получен по следующему алгоритму:
записать прямой код модуля числа;
инвертировать его (заменить единицы нулями, нули — единицами);
прибавить к инверсному коду единицу.
прямой код числа 37 есть 00000000000000000000000000100101;
инверсный код 11111111111111111111111111011010;
дополнительный код 11111111111111111111111111011011 или FFFFFFDB(16).
Модифицированные коды. Представление положительных и отрицательных чисел.
Правила сложения двоичных чисел с фиксированной точкой.
Сложение чисел выполняется с использованием обратного или дополнительного кодов.
Порядок сложения чисел:
1. Числа записываются в обратном или дополнительном коде.
2. Числа должны иметь одинаковое кол-во разрядов.
3. Сложение чисел выполняется поразрядно; 0+0=0; 0+1=1; 1+0=1; 1+1=10.
4. Знаковые разряды участвуют в сложении
-при сложении в доп.коде перенос теряется;
-при сложении в обратном коде единица переноса прибавляется к младшему разряду
А=-23 А пк =1.23 А ок =1.76
В=36 В пк =0.36 В ок =0.36
10.12 – (А+В) ок =0.13=А+В=+13.
Сложение двоичных чисел с использованием обратного кода(дополнительного кода).
При сложении чисел в дополнительном коде единица переноса из старшего разряда игнорируется (теряется), а в обратном коде эту единицу надо прибавить к младшему разряду результата.
Десятичная форма | Двоичная форма | Прямой код | Обратный код |
+12 | +1100 | ||
-5 | -101 |
Результат в обратном коде – 00000111. Поскольку знаковый разряд равен 0, результат положительный, и, следовательно, запись кода числа совпадает с записью прямого кода. Теперь можно восстановить алгебраическую запись результата. Он равен +111 (незначащие нули отброшены), или в десятичной форме +7. Проверка (+12-5=+7) показывает, что результат верный.
б) В дополнительном коде
Десятичная форма | Двоичная форма | Прямой код | Обратный код | Дополнительный код |
+12 | +1100 | |||
-5 | -101 |
Выполним сложение в дополнительном коде:
Результат в дополнительном коде – 00000111. Поскольку знаковый разряд равен 0, результат положительный. Теперь можно восстановить алгебраическую запись результата. Он равен +111 (незначащие нули отброшены), или в десятичной форме +7. Проверка (+12-5=+7) показывает, что результат верный.
Умножение и деление двоичных чисел производится в ЭВМ в прямом коде, а знаки их используются лишь для определения знака результата.
28.29.Сложение двоичных чисел с использованием модифицированного обратного кода(дополнительного кода).
Модифицированные обратные и дополнительные коды двоичных чисел отличаются соответственно от обратных и дополнительных кодов удвоением значений знаковых разрядов. Знак «+» в этих кодах кодируется двумя нулевыми знаковыми разрядами, а знак «-» — двумя единичными разрядами.
Целью введения модифицированных кодов являются фиксация и обнаружение случаев получения неправильного результата, когда значение результата превышает максимально возможный результат в отведенной разрядной сетке машины. В этом случае перенос из значащего разряда может исказить значение младшего знакового разряда. Значение знаковых разрядов «01» свидетельствует о положительном переполнении разрядной сетки, а «10» — об отрицательном переполнении. В настоящее время практически во всех моделях ЭВМ роль удвоенных разрядов для фиксации переполнения разрядной сетки играют переносы, идущие в знаковый и из знакового разряда.
При выполнении арифметических действий над двоичными числами эти два знака позволяют легко определить переполнение разрядной сетки. Если содержимое этих двух разрядов совпадает, то значит переполнение отсутствует. В противном случае в компьютере вырабатывается управляющий сигнал (сигнал переполнения) либо на останов компьютера, либо на устранение переполнения разрядной сетки.
1) Сложить два числа в модифицированном коде:
01. 1010 различные знаковые разряды свидетельствуют о переполнении разрядной сетки.
Дата добавления: 2015-01-30 ; просмотров: 39 | Нарушение авторских прав
Сложение двоичных чисел в обратном коде
2. Основы машинной арифметики с двоичными числами.
Любая информация (числа, команды, записи и т. п.) представляется в ЭВМ в виде двоичных кодов фиксированной или переменной длины. Отдельные элементы двоичного кода, имеющие значение 0 или 1, называют разрядами или битами. Двоичный код состоящий из 8 разрядов носит название байта. Для записи чисел также используют 32-разрядный формат (машинное слово), 16-разрядный формат (полуслово) и 64-разрядный формат (двойное слово).
В ЭВМ в целях упрощения выполнения арифметических операций применяют специальные коды для представления чисел. Использование кодов позволяет свести операцию вычитания чисел к арифметическому сложению кодов этих чисел. Применяются прямой, обратный и дополнительный коды чисел. Прямой код используется для представления отрицательных чисел в запоминающем устройстве ЭВМ, а также при умножении и делении. Обратный и дополнительный коды используются для замены операции вычитания операцией сложения, что упрощает устройство арифметического блока ЭВМ. К кодам выдвигаются следующие требования:
1) Разряды числа в коде жестко связаны с определенной разрядной сеткой.
2) Для записи кода знака в разрядной сетке отводится фиксированный, строго определенный разряд.
Например, если за основу представления кода взят один байт, то для представления числа будет отведено 7 разрядов, а для записи кода знака один разряд.
Прямой код. Прямой код двоичного числа совпадает по изображению с записью самого числа. Значение знакового разряда для положительных чисел равно 0, а для отрицательных чисел 1.
Знаковым разрядом обычно является крайний разряд в разрядной сетке. В дальнейшем при записи кода знаковый разряд от цифровых условимся отделять запятой. Если количество разрядов кода не указано будем предполагать, что под запись кода выделен один байт.
Обратный код. Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Дополнительный код. Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы.
Для числа +1101:
Прямой код | Обратный код | Дополнительный код |
0,0001101 | 0,0001101 | 0,0001101 |
2.2 Особенности сложения чисел в обратном и дополнительном кодах.
При сложении чисел в дополнительном коде возникающая единица переноса в знаковом разряде отбрасывается.
При сложении чисел в обратном коде возникающая единица переноса в знаковом разряде прибавляется к младшему разряду суммы кодов.
Если результат арифметических действий является кодом отрицательного числа, необходимо преобразовать его в прямой код. При этом обратный код преобразуется в прямой заменой цифр во всех разрядах кроме знакового на противоположные. Дополнительный код преобразуется в прямой также, как и обратный, с последующим прибавлением единицы к младшему разряду.
Сложить двоичные числа X и Y в обратном и дополнительном кодах.
1) Сложим числа, пользуясь правилами двоичной арифметики:
2) Сложим числа, используя коды:
Прямой код | Сложение в обратном коде | Сложение в дополнительном коде |
1) Сложим числа, пользуясь правилами двоичной арифметики:
2) Сложим числа, используя коды:
Прямой код | Сложение в обратном коде | Сложение в дополнительном коде |
2.3 Модифицированные обратный и дополнительный коды.
При переполнении разрядной сетки, происходит перенос единицы в знаковый разряд. Это приводит к неправильному результату, причем положительное число, получившееся в результате арифметической операции может восприниматься как отрицательное (так как в знаковом разряде «1») и наоборот.
Рассмотрим предыдущий пример, выполнив сложение в модифицированном обратном коде:
1) Переведем X и Y в модифицированный дополнительный код:
Обычная запись | Модифицированный обратный код | Модифицированный дополнительный код | ||||||||||
X= +101001 2) Выполним сложение: 2) Перевести X и Y в прямой, обратный и дополнительный коды. Сложить их в обратном и дополнительном кодах. Результат перевести в прямой код. Проверить полученный результат, пользуясь правилами двоичной арифметики. 3) Сложить X и Y в модифицированном обратном и модифицированном дополнительном восьмиразрядных кодах. В случае появления признака переполнения увеличить число разрядов в кодах и повторить суммирование. Результат перевести в прямой код и проверить, пользуясь правилами двоичной арифметики. Особенности сложения чисел в обратном и дополнительном кодах.При сложении чисел в дополнительном коде возникающая единица переноса в знаковом разряде отбрасывается. При сложении чисел в обратном коде возникающая единица переноса в знаковом разряде прибавляется к младшему разряду суммы кодов. Если результат арифметических действий является кодом отрицательного числа, необходимо преобразовать его в прямой код. При этом обратный код преобразуется в прямой заменой цифр во всех разрядах кроме знакового на противоположные. Дополнительный код преобразуется в прямой также, как и обратный, с последующим прибавлением единицы к младшему разряду. Сложить двоичные числа X и Y в обратном и дополнительном кодах. 1) Сложим числа, пользуясь правилами двоичной арифметики: 2) Сложим числа, используя коды:
Так как результат сложения является кодом положительного числа (знак 0), то (X+Y)обр=(X+Y)доп=(X+Y)пр. 1) Сложим числа, пользуясь правилами двоичной арифметики: 2) Сложим числа, используя коды:
Так как сумма является кодом отрицательного числа (знак 1), то необходимо перевести результаты в прямой код: (X+Y)обр=1,1110100 — из дополнительного кода (X+Y)доп=1,1110101 Дата добавления: 2015-08-01 ; просмотров: 2893 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ
|