Чем различаются обратный и дополнительный коды числа в компьютерном представлении отрицательных чисел
Представление отрицательных чисел в компьютере — это их выражение в виде дополнительного кода, который является самым применяемым для этих целей.
Отрицательные числа в дополнительном коде
Когда число представляется в формате дополнительного кода, то старший разряд будет считаться определяющим знак. Когда этот разряд равняется нулю, то в остальных разрядах записывается значение, которое совпадает с его основным кодированием. Число, состоящее из восьми разрядов в двоичном коде и имеющее знак, возможно представить в дополнительном коде как некое целочисленное значение в зоне от −128 до +127. Когда старший разряд имеет нулевое значение, то наибольшим числовым значением, которое возможно записать в остальных семи позициях, будет: $2^7 – 1$.
Десятичные числа в дополнительном коде
Аналогичная методика применяется и для отображения десятичных чисел в электронных вычислительных машинах. Последовательно выполняется замена символа Х на 9 – Х, и результату добавляется единица. К примеру, если применяются числа из четырёх разрядов, то – 2272 нужно заменить на 7728, то есть 7728 + 2272 = 0000, пятый разряд отбрасывается при этом.
Прямой, обратный и дополнительный коды
Следует подчеркнуть, что положительные числа в двоичном коде не зависимо от метода их представления, то есть в прямом, обратном или дополнительном кодах, обладают одинаковым видом.
Прямой код является методом отображения двоичных чисел с фиксированной запятой, который в основном применяется для записи неотрицательных чисел. Прямой код может применяться в следующих вариантах:
- В основном варианте он служит для записи только неотрицательных чисел. В этом случае для восьми битного двоичного числа может быть записано максимальное число 255 (всего чисел 256, то есть, от нуля до 255).
- Во втором варианте он служит для записи как положительных, так и отрицательных чисел.
Во втором случае старший бит принято считать знаковым разрядом (знаковым битом). Причём, если:
- Знаковый разряд равняется нулю, то число является положительным.
- Знаковый разряд равняется единице, то число является отрицательным.
В таком варианте диапазон десятичных чисел, которые могут быть записаны в прямом коде, составляет от - 127 до +127.
Готовые работы на аналогичную тему
Чтобы преобразовать число из прямого кода в дополнительный, нужно:
- В случае равенства нулю старшего числового разряда, являющегося знаковым, никаких переформирований не требуется, поскольку это означает, что число положительное.
- В случае равенства единице старшего разряда числа, представленного в прямом коде, все остальные числовые разряды подвергаются инверсии, а затем к итогу надо прибавить единицу.
Например, необходимо выполнить преобразование отрицательного числа пять, представленного в прямом коде, в формат дополнительного кода. Основным кодом является двоичный код:
Далее необходимо выполнить инверсию числовых разрядов, за исключением знакового, что даёт в результате обратный код числа минус пять:
Осталось прибавить единицу, что даст искомый итоговый дополнительный код:
Очень часто в вычислениях должны использоваться не только положительные, но и отрицательные числа.
Число со знаком в вычислительной технике представляется путем представления старшего разряда числа в качестве знакового . Принято считать, что 0 в знаковом разряде означает знак «плюс» для данного числа, а 1 – знак «минус».
Выполнение арифметических операций над числами с разными знаками представляется для аппаратной части довольно сложной процедурой. В этом случае нужно определить большее по модулю число, произвести вычитание и присвоить разности знак большего по модулю числа.
Применение дополнительного кода позволяет выполнить операцию алгебраического суммирования и вычитания на обычном сумматоре. При этом не требуется определения модуля и знака числа.
Прямой код представляет собой одинаковое представление значимой части числа для положительных и отрицательных чисел и отличается только знаковым битом. В прямом коде число 0 имеет два представления «+0» и «–0».
Обратный код для положительных чисел имеет тот же вид, что и прямой код, а для отрицательных чисел образуется из прямого кода положительного числа путем инвертирования всех значащих разрядов прямого кода. В обратном коде число 0 также имеет два представления «+0» и «–0».
Дополнительный код для положительных чисел имеет тот же вид, что и прямой код, а для отрицательных чисел образуется путем прибавления 1 к обратному коду. Добавление 1 к обратному коду числа 0 дает единое представление числа 0 в дополнительном коде. Однако это приводит к асимметрии диапазонов представления чисел относительно нуля. Так, в восьмиразрядном представлении диапазон изменения чисел с учетом знака.
Таблица прямого, обратного и дополнительного кода 4-битных чисел.
Число | Прямой код | Обратный код | Дополнительный код |
-8 | — | — | 1000 |
-7 | 1111 | 1000 | 1001 |
-6 | 1110 | 1001 | 1010 |
-5 | 1101 | 1010 | 1011 |
-4 | 1100 | 1011 | 1100 |
-3 | 1011 | 1100 | 1101 |
-2 | 1010 | 1101 | 1110 |
-1 | 1001 | 1110 | 1111 |
00 | 10000000 | 11110000 | 0000 |
1 | 0001 | 0001 | 0001 |
2 | 0010 | 0010 | 0010 |
3 | 0011 | 0011 | 0011 |
4 | 0100 | 0100 | 0100 |
5 | 0101 | 0101 | 0101 |
6 | 0110 | 0110 | 0110 |
7 | 0111 | 0111 | 0111 |
Сложение и вычитание чисел со знаком в дополнительном коде
Если оба числа имеют n–разрядное представление, то алгебраическая сумма будет получена по правилам двоичного сложения (включая знаковый разряд), если отбросить возможный перенос из старшего разряда. Если числа принадлежат диапазону представимых данных и имеют разные знаки, то сумма всегда будет лежать в этом диапазоне. Переполнение может иметь место, если оба cлагаемых имеют одинаковые знаки.
Пример 1: 6 – 4 = ?
6 – положительное число с кодом 0110
–4 – отрицательное число с дополнительным кодом 1100
(перенос игнорируется): 6 – 4 = 2.
Пример 2: –5 + 2 = ?
2 – положительное число с кодом 0010
–5 – отрицательное число с дополнительным кодом 1011
Число с кодом 1101 является отрицательным, модуль этого числа имеет код 00112 = 310.
Прямой, обратный и дополнительный коды — это методы отображения двоичных чисел, имеющих фиксированную запятую, в компьютерных вычислительных операциях, которые предназначены для представления отрицательных и положительных чисел.
Перевод числа из прямого кода в дополнительный
Введение
Прямой, обратный и дополнительный коды двоичных чисел являются способами отображения двоичных чисел, имеющих фиксированную запятую, в компьютерных вычислительных операциях, которые предназначены для представления отрицательных и положительных чисел. Известно, что любые десятичные числа можно представить в двоичном коде. Например, десятичное число 101 в двоичном формате равняется 1100101, или в восьми битном формате это выглядит как 0110 0101. А чтобы представить отрицательные десятичные числа в двоичном виде и обеспечить возможность выполнения с ними арифметических операций, как раз и предназначены различные методы отображения чисел в двоичном коде.
Введение
Под дополнительным кодом понимается самый используемый метод задания отрицательных целых чисел в компьютерной среде. Этот код даёт возможность использовать операционную процедуру сложения вместо вычитания, что делает данные процедуры равноценными как для чисел, имеющих знак минус, так и для чисел, не имеющих знака.
Такая числовая организация позволяет сильно упростить структурное построение электронных вычислительных машин. В западных версиях обратный код принято обозначать первым дополнением, а дополнительный код обозначать как второе дополнение. Дополнительный код отрицательного числа возможно сформировать путём инверсии его модуля в двоичном коде с последующим добавлением к инвертированному значению единицы. Этот вариант обозначается как второе дополнение. Дополнительный код числа со знаком минус возможно также сформировать, если вычесть это число из нуля. То есть, дополнительный код числа в двоичном коде, может быть сформирован путём добавления единицы к младшему не нулевому разряду первого дополнения этого числа. Второе дополнение числа в двоичном коде формируется как кодовый набор, который получается при вычитании числа из самой большой степени двойки, то есть из два в степени N для второго дополнения числа, состоящего из N двоичных кодов.
Готовые работы на аналогичную тему
Таким образом, на основании изложенного выше можно сделать вывод, что прямой код может применяться в основном для представления неотрицательных чисел. Применение прямого кода для представления отрицательных чисел считается малоэффективным, поскольку при этом достаточно сложно реализовать арифметические операции и, помимо этого, в прямом коде существует два представления нуля, а именно, положительный нуль и отрицательный нуль (чего не бывает).
Обратный код является способом вычислительной математики, который позволяет осуществить вычитание одного числа из другого, применяя лишь операцию суммирования. Обратный двоичный код положительного числа представляет собой одноразрядный код знака, то есть, двоичного числа нуль, за которым должно следовать числовое значение.
Обратные двоичные коды отрицательных чисел представляет собой одноразрядный код знака, а именно, двоичную цифру единица, за которой должны следовать инвертированные значения положительных чисел. Для положительных чисел обратный код двоичных чисел обладает таким же видом, что и представление неотрицательных чисел в прямом коде.
Для отрицательных чисел обратный код может быть получен из неотрицательного числа в прямом коде, путем инвертирования всех битов, то есть, единицы заменяются нулями, а нули должны быть заменены на единицы. Для преобразования отрицательного числа, которое записано в обратном коде, в положительное необходимо просто выполнить его инвертирование. Для восьми битного двоичного числа знаковым битом, как и в прямом коде, является старший, то есть, восьмой бит. Диапазон десятичных чисел, которые могут быть записаны в обратном коде, простирается от -127 до + 127. Ниже приведены примеры записи чисел в обратном коде.
Рисунок 1. Примеры записи чисел в обратном коде. Автор24 — интернет-биржа студенческих работ
Далее рассмотрим выполнение арифметических операций с отрицательными числами в обратном коде (арифметические операции с двоичными числами).
Имеем следующие два числа:
Необходимо выполнить их сложение, которое в десятичном формате имеет общеизвестный вид:
100 + (–25) = 100 - 25 = 75
Для реализации этой операции в двоичных кодах, необходимо сначала выполнить перевод числа -25 в двоичное число в обратном коде:
Затем необходимо осуществить собственно операцию сложения двух чисел:
0110 0100 (100) + 1110 0110 (–25) = 1 0100 1010.
Старший единичный разряд необходимо отбросить, так как получился лишний девятый разряд, как результат переполнения:
Далее отброшенную в результате старшую единицу следует прибавить к результату:
0100 1010 + 1 = 0100 1011.
При этом знаковый бит равняется нулю и это означает, что число является положительным и равным 75 в десятичной системе.
Обратный код способен решить проблему сложения и вычитания чисел с разными знаками, но также и обладает определёнными недостатками:
- Для выполнения арифметических операций необходимо осуществить два этапа.
- Как и для прямого кода существует два представления нуля, а именно, положительный и отрицательный.
Дополнительный код является самым распространенным способом представления отрицательных чисел. Он предоставляет возможность замены операции вычитания операцией сложения, а также позволяет сделать операции сложения и вычитания одинаковыми для знаковых и без знаковых чисел.
Дополнительный код, аналогично прямому и обратному кодам, использует старший разряд для обозначения знака числа, то есть, этот разряд является знаковым битом. Диапазон десятичных чисел, которые могут быть записаны в дополнительном коде, простирается от -128 до +127. Запись положительных двоичных чисел в дополнительном коде выполняется так же, как и в прямом и обратном кодах.
Дополнительный код отрицательного числа может быть получен следующими способами:
В ВТ, с целью упрощения реализации арифметических операций, применяют специальные коды. За счет этого облегчается определение знака результата операции, а операция вычитания чисел сводится к арифметическому сложению. В результате упрощаются устройства, выполняющие арифметические операции.
В ВТ применяют прямой, обратный и дополнительный коды.
Прямойдвоичный код Рпр(х) — это такое представление двоичного числа х, при котором знак «+» кодируется нулем в старшем разряде числа, а знак «-» — единицей. При этом старший разряд называется знаковым.
Например, числа +5D и -5D, представленные в прямом четырехразрядном коде, выглядят так: +5D = 0'101 В; -5D = 1'101. Здесь апострофом условно (для удобства определения знака) отделены знаковые разряды.
Обратный кодРобр(х) получается из прямого кода по следующему правилу:
Из приведённого выражения видно, что обратный код для положительных чисел совпадает с прямым кодом. Чтобы представить отрицательное двоичное число в обратном коде, нужно оставить в знаковом разряде 1, во всех значащих разрядах заменить 1 на 0, а 0 на 1. Такая операция называется инвертированием и обозначается горизонтальной чертой над инвертируемым выражением
Пример 4. Получить обратный код для числа .х =-11D.
Считается, что здесьчисла представлены пятью разрядами. Из рассмотренного примера видно, что обратный код для положительных чисел совпадает с прямым, а для отрицательных чисел получается инверсией (переворотом) всех разрядов, кроме знакового разряда.
Дополнительный кодРдоп(х) образуется следующим образом:
Из выражения видно, что дополнительный код положительного числа совпадает с прямым кодом, а для отрицательного числа получается инверсией всех значащих разрядов и добавлением единицы к младшему разряду результата.
Дополнительный код отрицательного числа может быть получен из обратного кода путем прибавления 1 к младшему разряду обратного кода (естественно, с учетом переносов между разрядами).
Пример5. Получить дополнительный код для числа
Pnp(x) = (1'1101)прямой код
Робр(х) =(1’0010) обратный код
Рдоп(х ) = (1’0011) дополнительный код.
При алгебраическом сложении двоичных чисел положительныеслагаемые представляют в прямом коде, а отрицательные — в дополнительном коде и производят арифметическое суммирование этих кодов,включая разряды знаков, которые при этом рассматривают как старшиеразряды. При возникновении переноса из разряда знака единицу переноса отбрасывают, в результате получают алгебраическую сумму в прямом коде, если эта сумма положительная, и в дополнительном коде,если сумма отрицательная.
Пример 6.Выполнить алгебраическое сложение с использованием дополнительного кода для чисел х1 =7D х2- -3D.
Необходимо найти сумму: у = х1 + х2.
Учитывая, что х1>0, это число нужно представить в прямом коде, а так как х2 О, то х2 нужно перевести в дополнительный код.
Так как результат положителен (в знаковом разряде Р(у) — 0), значит, он представлен в прямом коде. После перевода двоичного числа в десятичную СС получим ответ: у = +4D.
Пример7. Выполнить алгебраическое сложение с использованием дополнительного кода для чисел X; = 8D и х2 - -13D.
Необходимо найти сумму: у = x1 + х2.
Число х1нужно представить в прямом коде, а х2 — в дополнительном коде.
В знаковом разряде стоит единица, и, значит, результат получен в дополнительном коде. Для перехода от дополнительного кода
Рдоп(у)=1’1011В к прямому коду Рпр(у) необходимо выполнить следующие преобразования:
Робр(y) = Рдоп(у) -1 =1’1011-1=1’1010
Рпр(y) = Робр(y) = 1’Инв(1010) = 1’0101В. Переходя от двоичной СС к десятичной СС, получим ответ: у = -5D.
В ВТ, с целью упрощения реализации арифметических операций, применяют специальные коды. За счет этого облегчается определение знака результата операции, а операция вычитания чисел сводится к арифметическому сложению. В результате упрощаются устройства, выполняющие арифметические операции.
В ВТ применяют прямой, обратный и дополнительный коды.
Прямойдвоичный код Рпр(х) — это такое представление двоичного числа х, при котором знак «+» кодируется нулем в старшем разряде числа, а знак «-» — единицей. При этом старший разряд называется знаковым.
Например, числа +5D и -5D, представленные в прямом четырехразрядном коде, выглядят так: +5D = 0'101 В; -5D = 1'101. Здесь апострофом условно (для удобства определения знака) отделены знаковые разряды.
Обратный кодРобр(х) получается из прямого кода по следующему правилу:
Из приведённого выражения видно, что обратный код для положительных чисел совпадает с прямым кодом. Чтобы представить отрицательное двоичное число в обратном коде, нужно оставить в знаковом разряде 1, во всех значащих разрядах заменить 1 на 0, а 0 на 1. Такая операция называется инвертированием и обозначается горизонтальной чертой над инвертируемым выражением
Пример 4. Получить обратный код для числа .х =-11D.
Считается, что здесьчисла представлены пятью разрядами. Из рассмотренного примера видно, что обратный код для положительных чисел совпадает с прямым, а для отрицательных чисел получается инверсией (переворотом) всех разрядов, кроме знакового разряда.
Дополнительный кодРдоп(х) образуется следующим образом:
Из выражения видно, что дополнительный код положительного числа совпадает с прямым кодом, а для отрицательного числа получается инверсией всех значащих разрядов и добавлением единицы к младшему разряду результата.
Дополнительный код отрицательного числа может быть получен из обратного кода путем прибавления 1 к младшему разряду обратного кода (естественно, с учетом переносов между разрядами).
Пример5. Получить дополнительный код для числа
Pnp(x) = (1'1101)прямой код
Робр(х) =(1’0010) обратный код
Рдоп(х ) = (1’0011) дополнительный код.
При алгебраическом сложении двоичных чисел положительныеслагаемые представляют в прямом коде, а отрицательные — в дополнительном коде и производят арифметическое суммирование этих кодов,включая разряды знаков, которые при этом рассматривают как старшиеразряды. При возникновении переноса из разряда знака единицу переноса отбрасывают, в результате получают алгебраическую сумму в прямом коде, если эта сумма положительная, и в дополнительном коде,если сумма отрицательная.
Пример 6.Выполнить алгебраическое сложение с использованием дополнительного кода для чисел х1 =7D х2- -3D.
Необходимо найти сумму: у = х1 + х2.
Учитывая, что х1>0, это число нужно представить в прямом коде, а так как х2 О, то х2 нужно перевести в дополнительный код.
Так как результат положителен (в знаковом разряде Р(у) — 0), значит, он представлен в прямом коде. После перевода двоичного числа в десятичную СС получим ответ: у = +4D.
Пример7. Выполнить алгебраическое сложение с использованием дополнительного кода для чисел X; = 8D и х2 - -13D.
Необходимо найти сумму: у = x1 + х2.
Число х1нужно представить в прямом коде, а х2 — в дополнительном коде.
В знаковом разряде стоит единица, и, значит, результат получен в дополнительном коде. Для перехода от дополнительного кода
Рдоп(у)=1’1011В к прямому коду Рпр(у) необходимо выполнить следующие преобразования:
Робр(y) = Рдоп(у) -1 =1’1011-1=1’1010
Рпр(y) = Робр(y) = 1’Инв(1010) = 1’0101В. Переходя от двоичной СС к десятичной СС, получим ответ: у = -5D.
Читайте также: