Ладно. Хотя, учитывая, мягко говоря, лаконичность ТС, IMHO переходящую в обычное хамство (ведь просим же давать четкую и развернутую формулировку задания, а не цедить по чайной ложке), не стоило бы тратить на него время, но может быть кому другому пригодится.
Разберем задачу.
Итак, дан дополнительный двоичный код чисел. Исходя из знакового разряда, определяем, что х - положителен, а у - отрицателен. Переведем исходные данные в десятичную систему и сосчитаем ожидаемые результаты (точкой в двоичной записи отделим знаковые разряды):
Код:
x = 00.01001000110101 → 4661
-x = 01.10110111001011 → -4661
y = 01.11100000101110 → -2002
-y = 00.00011111010010 → 2002
откуда (в десятичной системе):
Код:
x + y = 2659
x - y = 6663
-x + y = -6663
-x - y = -2659
Теперь считаем в дополнительном коде:
Код:
х + у:
00.01001000110101
01.11100000101110
-------------------
10.00101001100011
Отбрасывая старшую единицу знаковых разрядов и стоящие впереди нули, получаем положительное двоичное число
101001100011, соответствующее 2659.
Далее:
Код:
х - у = х + (-у):
00.01001000110101
00.00011111010010
-------------------
00.01101000000111
Или опять же положительное число
1101000000111, соответствующее 6663.
Продолжаем:
Код:
-х + у:
01.10110111001011
01.11100000101110
-------------------
11.10010111111001
После отбрасывания старшей единицы знакового разряда получаем отрицательное число в дополнительном коде (младший знаковый разряд равен 1). Чтобы перейти к прямому двоичному коду, нужно:
а) вычесть 1
б) инвертировать цифровые разряды
Результат этих манипуляций - число
1.01101000000111, соответствующее -6663.
И, наконец, последнее:
Код:
-х - у = -х + (-у):
01.10110111001011
00.00011111010010
-------------------
01.11010110011101
Вновь получили отрицательное число. Проделав те же операции, что в предыдущем случае, получаем в прямом двоичном коде
1.00101001100011, что соответствует -2659