Для числа +1101 прямой код 0,0001101; обратный код 0,0001101



бет1/2
Дата10.11.2022
өлшемі42,56 Kb.
#157482
  1   2
Байланысты:
Пример
Документ Microsoft Office Word

Пример. В случае, когда для записи кода выделен один байт, для числа +1101 прямой код 0,0001101, для числа -1101 прямой код 1,0001101.
Обратный код. Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Пример.
Для числа +1101 прямой код 0,0001101; обратный код 0,0001101.
Для числа -1101 прямой код 1,0001101; обратный код 1,1110010.
Дополнительный код. Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы.
Пример.
Для числа +1101:



Прямой код

Обратный код

Дополнительный код

0,0001101

0,0001101

0,0001101

Для числа -1101:





Прямой код

Обратный код

Дополнительный код

1,0001101

1,1110010

1,1110011

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


При сложении чисел в дополнительном коде возникающая единица переноса в знаковом разряде отбрасывается.
При сложении чисел в обратном коде возникающая единица переноса в знаковом разряде прибавляется к младшему разряду суммы кодов.
Если результат арифметических действий является кодом отрицательного числа, необходимо преобразовать его в прямой код. При этом обратный код преобразуется в прямой заменой цифр во всех разрядах кроме знакового на противоположные. Дополнительный код преобразуется в прямой также, как и обратный, с последующим прибавлением единицы к младшему разряду.
Пример
Сложить двоичные числа X и Y в обратном и дополнительном кодах.
а) X= 111, Y= -11;
1) Сложим числа, пользуясь правилами двоичной арифметики:

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

Прямой код

Сложение в обратном
коде

Сложение в дополнительном
коде






Так как результат сложения является кодом положительного числа (знак 0), то (X+Y)обр=(X+Y)доп=(X+Y)пр.


б) X= -101,Y= -11;
1) Сложим числа, пользуясь правилами двоичной арифметики:

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

Прямой код

Сложение в обратном
коде

Сложение в дополнительном
коде







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


- из обратного кода
(X+Y)обр=1,1110100  (X+Y)пр=1,0001011;
- из дополнительного кода
(X+Y)доп=1,1110101  (X+Y)пр=1,0001010+0,0000001=1,0001011.
Таким образом, X+Y= -1011 и полученный результат совпадает с обычной записью.
2.3 Модифицированные обратный и дополнительный коды.
При переполнении разрядной сетки, происходит перенос единицы в знаковый разряд. Это приводит к неправильному результату, причем положительное число, получившееся в результате арифметической операции может восприниматься как отрицательное (так как в знаковом разряде "1") и наоборот.
Например: 
Здесь X и Y - коды положительных чисел, но ЭВМ воспринимает результат их сложения как код отрицательного числа ("1" в знаковом разряде). Для обнаружения переполнения разрядной сетки вводятся модифицированные коды.
В модифицированном обратном и модифицированном дополнительном кодах под знак числа отводится не один, а два разряда: "00" соответствует знаку "+", "11" - знаку "-". Любая другая комбинация ("01" или "10"), получившаяся в знаковых разрядах служит признаком переполнения разрядной сетки. Сложение чисел в модифицированных кодах ничем не отличается от сложения в обычных обратном и дополнительном кодах.
Рассмотрим предыдущий пример, выполнив сложение в модифицированном обратном коде:

Комбинация "01" в знаковых разрядах означает, что произошло переполнение и получившийся результат - неверный.
Рассмотрим ещё один пример.
Пример. Даны два числа: X=101001 и Y= -11010. Сложить их в модифицированном дополнительном коде.
1) Переведем X и Y в модифицированный дополнительный код:

Обычная запись

Модифицированный
обратный
код

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

X= +101001

Y= -011010







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



Переполнения нет (в знаковых разрядах "00"), поэтому полученный результат - верный (X+Y=1111)


Достарыңызбен бөлісу:
  1   2




©www.engime.org 2024
әкімшілігінің қараңыз

    Басты бет