Наименьшая двойка в двоичном коде - PullRequest
1 голос
/ 06 декабря 2011

Я не уверен, что могу задать бинарный вопрос здесь, но здесь идет .. У нас был этот вопрос в среднесрочной перспективе, но наш профессор не дал правильный ответ на него. Это сводит меня с ума, и скоро будет финал, так что, возможно, было бы неплохо заполнить этот пробел. Спасибо!

Найдите наименьший номер дополнения двух, который при добавлении к 0101 0101 приведет к переполнению. Выразите свой ответ в двоичном виде.

Мои рассуждения: Я нашел диапазон исходного двоичного файла 0101 0101, преобразовав его в фактическое число, а затем добавил к нему один. Затем я преобразовал число, которое было на 1 больше, чем диапазон, в 8-разрядный двоичный файл в качестве ответа. Однако это принесло мне только 3/6 баллов. Я понятия не имею, что еще я мог сделать. Любые идеи будут с благодарностью!

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Исходный двоичный файл является положительным числом (0 знаковый бит). Переполнение происходит, когда вы добавляете к нему положительное число, которое меняет бит знака. Должно быть легко увидеть, какое наименьшее число использует двоичная запись:

Без переполнения:

  0101 0101
+ 0010 1010
  ---------
  0111 1111

Переполнение:

  0101 0101
+ 0010 1011
  ---------
  1000 0000

Понятия не имею, искал ли это ваш профессор. (Вероятно, вы можете просто вычесть из 1000 0000 вместо того, чтобы рассматривать его как шаблон.)

РЕДАКТИРОВАТЬ Поскольку вы запросили пример (имеется в виду что-то отличное от вышеупомянутого), вот как будет работать вычитание:

  1000 0000 (the target overflow quantity)
- 0101 0101 (the original binary)
  ---------
  0010 1011 (the smallest number that will overflow when added to original)
0 голосов
/ 06 декабря 2011

Это число составляет 85 в десятичном виде, поэтому 128-85 это 43

...