2013-04-15 5 views
0

Я построил четырехразрядный сумматор/вычитатель, использующий 4, 1 бит полных сумматоров, а вход и выход - два дополнительных номера.Понимание дополнения Дополнения

Если X=0111 and Y=1000 их сумма, очевидно, 1111.

В десятичной системе это эквивалентно 7 + 8, таким образом, 15, который является то, что результаты сумма в.

Я смущен, однако, если этот результат должен быть переведен вернуться в «обычный» двоичный файл, перевернув биты и добавив один? Так что ответ будет 0001, представляющий 1 в десятичной системе вместо. И то, что Y в десятичном значении перед переводом было фактически 0110, представляющим 6, тем самым давая следующее в двоичном формате 7-6 = 1. Если бы кто-нибудь мог указать мне в правильном направлении, я был бы признателен!

ответ

1

Кажется, у вас есть преобразование для ошибки Y. Y = 1000 = -8 .

Представлять -6 вы берете 0110, флип биты, чтобы получить 1001 и добавить один, так что Y = 1010. (А 0111 + 1010 = 0001, как вы ожидали.)

Чтобы вернуться назад, переворачивать биты 1010 = 0101 и добавить один дает 0110 = 6.

Редактировать, чтобы ответить на ваш последующий вопрос:

Пусть:

X = 0111 
Y = 1100 

X + Y = 0011 (ignoring overflow) 

Так все, что мы добавим, что равняется 3. мы что X = 7.

Y = 1100 => 0011 + 1 = (negative)0100 = -4 

7 + (-4) = 3

Нет перевода необходимо, просто представляют положительные и отрицательные числа правильно. Я думаю, что ваша путаница исходит из того факта, что мы «отрицаем» отрицательные числа, чтобы найти абсолютное значение этого числа и придерживаться перед ним отрицательного знака, как при преобразовании Y выше. Это потому, что отрицательные числа в дополнении 2 не так читаются, как положительные числа, но 0100 по-прежнему +4 и 1100 все еще -4.

+0

Я все еще смущен. Возможно, это станет более ясным. Глядя на данные x = 0111 и y = 1000, с суммой 1111, каков результат, 1111 перевести в десятичную, и что изначально было бы в десятичной форме? – ZAX

+0

7 - 8 = -1: возьмите 1111, переверните биты до 0000 и добавьте один для получения (отрицательный) 0001. – beaker

+0

И только чтобы быть полным, 1000 равно 0111 + 1 = (отрицательный) 1000 или -8. – beaker

Смежные вопросы