В обратном коде:
1010 1111(т. е. 175) - 1100 0101(т. е. 197) = 1010 1111 + (-1100 0101) =
= 1010 1111 + 0011 1010 = 1110 1001 (=-00010110, т. е. -22)
В доп. коде:
1010 1111(т. е. 175) - 1100 0101(т. е. 197) = 1010 1111 + (-1100 0101) =
= 1010 1111 + 0011 1011 = 1110 1010 (=-00010110 + т. е. -22)
[В доп. коде все то же самое, что и в обр. коде; просто при переводе в доп. код и обратно после инвертирования числа еще прибавляется единица]
Другие языки программирования и технологии
как сложить 175-197 в обратном и дополнительном коде?? ? подскажите кто-нибудь пожалуйста...
Расмотрим сложение чисел в дополнительном коде.
В современных вычислительных машинах операция алгебраического сложения выполняется над числами, представленными либо в дополнительном, либо в обратном коде. Операция алгебраического вычитания сводится к операции алгебраического сложения путем перемены у вычитаемого знака на противоположный.
Рассмотрим операцию алгебраического сложения A+B=Z, где A, B представлены в прямом коде по форме 2 (формы представления см в лр №1).
В вычислительных машинах числа часто хранятся в запоминающих устройствах в дополнительном коде, тогда преобразования из прямого в дополнительный и обратно делать не нужно.
При расмотрении алгоритмов первоночально будем полагать, что переполнения разрядной сетики нет, т. е. при сложении дробных чисел результат получается меньше 1.
При сложении чисел в дополнительном коде возможны следующие 4 случая.
I. A>0 B>0 (A+B)>0
Тогда [А] доп=А; [В] доп=В;
[А] доп+[В] доп=А+В=[А+В] доп;
Пример0.01101
+ 0.01001
0,10110 =[А+В] доп=[А+В] пр.
II. А> 0, В< 0, (А+В) > 0.
Тогда [A]доп=А; доп=10 + В;
Число 10 в правой части равенства показывает, что появилась единица переноса из знакового разряда. Поэтому для получения правильного результата
(дополнительного кода положительной суммы) эту единицу необходимо отбросить.
[A]доп+доп= A+10+B=10+(A+B)=[A+B]пр
=>единица, вышедшая за знаковый разряд.
Число 10 в правой части равенства показывает, что появилась единица переноса из знакового разряда. Поэтому для получения правильного результата
(дополнительного кода положительной суммы) эту единицу необходимо отбросить.
Пример. [А] пр=0.10110; [А] доп= 0.10110;
пр=1.01001; доп= 1.10111;
0.10110
+ 1.10111
= 10.01101 = [А+B]доп=[А+В] пр
III. А>0, B<0, А+B<0
Тогда [A]доп=А; [В] доп=10+В;
[А] доп+[В] доп= А+10+В = 10+[А+В] =[А+В] доп
Пример [A]пр =0.0111; [А] доп = 0.0111;
пр =1.1001; доп = 1.0111;
[А+В] пр =1.0010;
0.0111
+ 1.0111
= 1.1110 =[А+В] доп.
IV. А<0; В<0; (А+В) <0.
Тогда [А] доп= 10 + A; [В] доп=10 + B;
[А] доп+[В] доп= 10+A+10+B = 10+10+[А+В] =10доп+[А+В] доп
==>перенос из знакового разряда
В этом случае появилась единица переноса из знакового разряда. Для получения правильного результата (суммы в дополнительном коде) эту единицу
следует отбросить.
Пример. [А] пр= 1.0101; [А] доп= 1.1011;
[В] пр= 1.0111; [В] доп= 1.1001;
1,1011
+1,1001
=11.0100 = [А+В] доп
[А+В] пр= 1.1100
Таким образом, дополнительные коды чисел складываются по обычным правилам сложения двоичных чисел (знаковый разряд рассматривается как обычный цифровой) , но единица переноса из знакового разряда не учитывается.
В современных вычислительных машинах операция алгебраического сложения выполняется над числами, представленными либо в дополнительном, либо в обратном коде. Операция алгебраического вычитания сводится к операции алгебраического сложения путем перемены у вычитаемого знака на противоположный.
Рассмотрим операцию алгебраического сложения A+B=Z, где A, B представлены в прямом коде по форме 2 (формы представления см в лр №1).
В вычислительных машинах числа часто хранятся в запоминающих устройствах в дополнительном коде, тогда преобразования из прямого в дополнительный и обратно делать не нужно.
При расмотрении алгоритмов первоночально будем полагать, что переполнения разрядной сетики нет, т. е. при сложении дробных чисел результат получается меньше 1.
При сложении чисел в дополнительном коде возможны следующие 4 случая.
I. A>0 B>0 (A+B)>0
Тогда [А] доп=А; [В] доп=В;
[А] доп+[В] доп=А+В=[А+В] доп;
Пример0.01101
+ 0.01001
0,10110 =[А+В] доп=[А+В] пр.
II. А> 0, В< 0, (А+В) > 0.
Тогда [A]доп=А; доп=10 + В;
Число 10 в правой части равенства показывает, что появилась единица переноса из знакового разряда. Поэтому для получения правильного результата
(дополнительного кода положительной суммы) эту единицу необходимо отбросить.
[A]доп+доп= A+10+B=10+(A+B)=[A+B]пр
=>единица, вышедшая за знаковый разряд.
Число 10 в правой части равенства показывает, что появилась единица переноса из знакового разряда. Поэтому для получения правильного результата
(дополнительного кода положительной суммы) эту единицу необходимо отбросить.
Пример. [А] пр=0.10110; [А] доп= 0.10110;
пр=1.01001; доп= 1.10111;
0.10110
+ 1.10111
= 10.01101 = [А+B]доп=[А+В] пр
III. А>0, B<0, А+B<0
Тогда [A]доп=А; [В] доп=10+В;
[А] доп+[В] доп= А+10+В = 10+[А+В] =[А+В] доп
Пример [A]пр =0.0111; [А] доп = 0.0111;
пр =1.1001; доп = 1.0111;
[А+В] пр =1.0010;
0.0111
+ 1.0111
= 1.1110 =[А+В] доп.
IV. А<0; В<0; (А+В) <0.
Тогда [А] доп= 10 + A; [В] доп=10 + B;
[А] доп+[В] доп= 10+A+10+B = 10+10+[А+В] =10доп+[А+В] доп
==>перенос из знакового разряда
В этом случае появилась единица переноса из знакового разряда. Для получения правильного результата (суммы в дополнительном коде) эту единицу
следует отбросить.
Пример. [А] пр= 1.0101; [А] доп= 1.1011;
[В] пр= 1.0111; [В] доп= 1.1001;
1,1011
+1,1001
=11.0100 = [А+В] доп
[А+В] пр= 1.1100
Таким образом, дополнительные коды чисел складываются по обычным правилам сложения двоичных чисел (знаковый разряд рассматривается как обычный цифровой) , но единица переноса из знакового разряда не учитывается.
Похожие вопросы
- Добрый день! Помогите выполнить вычитание в прямом, обратном и дополнительном кодах: 0,111101101- 0,101111010
- Отрицательные числа и дополнительный код
- Как представленное ниже значение в двоичном дополнительном коде преобразовать в десятичный формат? число 11010
- Нужна программа на паскале, вычисляющая дополнительный код отрицательного числа
- В специализированной ЭВМ целые числа рассматриваются как числа со знаком и представляются в дополнительном коде. Для х
- Исправьте мне программный код в visual Basiсе пожалуйста!
- Хочу научится программированию в двоичном коде. Подскажите с чего начать и что делать.
- Не могу установить Visual Studio 2017. Подскажите, что делать? Пожалуйста!
- Подскажите язык программирования, пожалуйста.
- ПОДСКАЖИТЕ ПОЖАЛУЙСТА код разблокировки баннера билайн