#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 их игнорирует)