Дополнение двойки, вычитание двух отрицательных двоичных чисел

#java #math #binary #subtraction

#java #математика #двоичный #вычитание

Вопрос:

Итак, я делаю CS, и лектор выписал новый двоичный вопрос, который я не могу понять.

В принципе, как вы вычитаете два отрицательных числа, если они в двоичном формате?

В частности, как это сделать, используя константу Two, которая была только что введена.

Например: -2 - -7 = 5
Или: 1110 - 1001

Я не понимаю, как вы используете эти биты, чтобы получить правильный ответ, т.е. 5.

Кто-нибудь может помочь, пожалуйста?

Комментарии:

1. так же, как вы делаете обычное вычитание? или вы спрашиваете о правилах, когда вы переполняете крайний левый бит?

2. Привет, Кевин, я действительно не понимаю, как? Если я переключу 2-й член и добавлю их, у меня останется число 1 даже после переполнения. Не могли бы вы показать мне работу для примера?

3. Возможно, попробовать здесь? cs.stackexchange.com

Ответ №1:

Если у вас есть

   1110 -2
- 1001 -7
------
  0101  5
  

и это то же самое, что

   1110 -2
  0111  7
------
  0101  5
  

Комментарии:

1. Спасибо! Итак, ответ 10101 — тогда из-за переполнения вы избавляетесь от самой левой цифры, чтобы сделать ее 0101, то есть 5?

2. @alexjackhughes да, если вы используете 4-разрядные, 8-разрядные или 32-разрядные значения, вы не получите дополнительный бит, потому что вы выполнили вычисление. (Технически процессор сохраняет этот бит во флагах, но Java их игнорирует)