перенос в старшем значащем бите (3 цифры) - PullRequest
0 голосов
/ 01 июля 2019

Рассмотрим представление дополнения до двух битов:

3 + 2 вызывает переполнение.

011 + 010 = 100 // почему это 100?Я думаю, что это должно быть 101.

И каковы переносы в наиболее значимый бит и вынос из наиболее значимого бита в этом случае?

учебник говорит перенос встарший значащий бит - 1, вынос самого старшего бита - 0.

Я думаю, что учебник неверен.перенос должен быть 0, а вынос должен быть 1. Я прав или учебник правильный?

Пожалуйста, помогите.Спасибо.

Учебник

1 Ответ

0 голосов
/ 01 июля 2019

Правильно и неправильно, я бы сказал, так же, как и большая часть жизни: -)

Вы правы, заявив, что 011 + 010 = 101. Ссылка, которую вы разместили, дала 100 значение -4, которое является правильной интерпретацией этого значения, хотя и не является правильным значением.

Обычно можно получить переполненное значение, сложив два значения без с учетом переполнения, а затем вычтя диапазон (восемь для трехразрядного значения), если он больше половины диапазона меньше единицы.

Другими словами, 3 + 2 = 5, но, поскольку это больше трех (половина диапазона меньше единицы), вы вычитаете диапазон 8, чтобы получить -3, то есть то, что ваш правильный бит шаблон, 101:

Bit pattern   Unsigned   Signed
-----------   --------   ------
   000           0          0
   001           1          1
   010           2          2
   011           3          3
   100           4         -4
   101           5         -3
   110           6         -2
   111           7         -1

Тем не менее, добавление средних битов (без переноса из правильных битов) действительно фактически дает результат с нулем и переносом одного.

Это означает, что перенос в MSB (левый бит) равен , действительно один. И, добавляя эти оставленные цифры (обе нули) с переносом единицы, вы получите одну с переносом нуля.

Может быть, вы читаете учебник по-другому для меня, но нам, возможно, придется воспользоваться этим сомнением здесь.

...