2015-06-09 5 views
0

Мне нужна помощь в определении того, правильно ли я здесь ошибаюсь.Нужна помощь в понимании 8-битного десятичного знака с дополнением 2

Пример Вопрос

"Предполагая, что у меня есть 8-разрядное десятичное значение 200 в двух в форме комплимента ..."

Моя мысль Процесс

Теперь, потому что это 8 бит и подписан, самый старший бит должен быть зарезервирован для знака.

Таким образом, максимальное положительное значение оно может иметь:

2^(8-1) - 1 = 127

Сначала я был смущен, потому что я думал, почему вопрос о том, что 200 может быть 8 бит и подписан? Тогда я подумал, вот где заявление о комплименте двух под вопросом.

Потому что это двоичный комплимент на самом деле, это так:

8-разрядная, 2 в Комплименте, Decimal = 200

Преобразования в двоичный -> 1100 1000

Потому что это подписывается, номер комплимента фактического двух - ACTUALLY -56 (я бы использовал методы отрицания для инверсии 1 и 0, а затем + 1, но для интереса времени я просто нашел конвертер онлайн).

Так что мой вывод:

8-разрядное, 2 в Комплимент, десятичное значение 200 фактически -56.

Окончательный Вопрос

ли мой мыслительный процесс правильно с этим? Если это так, я думаю, что самая запутанная часть об этом говорит моему мозгу, что одно число равно совершенно другому числу.

ответ

0

Да, я думаю, что ваш анализ верен.

Чтобы расширить немного больше, я думаю, что формулировка вопроса неудобна, и было бы лучше указано как «Какова ценность 1100 1000 в базе 10, где число является дополненным номером два?»

Трюк здесь состоит в том, чтобы думать не о 200 == -56, но о единственной точке истины - это бит 11001000. Эти биты чисел не имеют никакого значения сами по себе. У нас компьютер интерпретирует их по-разному на основе программы. Таким образом, два дополнения (с 8-разрядными номерами) рассматривают, что как -56, неподписанная интерпретация будет рассматривать это как 200, а в ASCII это будет особый символ в зависимости от кодировки.

+0

так как будет представлено десятичное число 200? или мы не можем? Мне нужно обновить эту ... любую ссылку, чтобы прочитать об этом? – Nirmal

+0

200 не может быть представлен в 8 битах с использованием двух дополнений, диапазон составляет -127 <-> 128. Либо биты должны интерпретироваться как целое число без знака, либо вам нужно больше битов (не менее 9), чтобы представить 200 в качестве номера дополнения двух – AnilRedshift

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

  • Нет связанных вопросов^_^