2012-03-21 3 views
0

Это вопрос, который я видел в прошлой статье. Я думаю, что понимаю 10-е дополнение, но не понимаю следующий вопрос о дополнении двух. Кроме того, что делает комплимент двух связанных с бинарными?Представление данных дополнений 2

Какое число в базе 10 представлено 1110 в 2 с дополнениями с k = 4? Будет ли ответ изменяться, если k = 5?

Просьба пояснить ответ, спасибо за помощь!

+0

Is k максимальное количество бит? – Glenn

ответ

2

Дополнение от двоих - это метод представления чисел negaitve в двоичном формате. Я не понимаю, как это работает, но это так, за этим стоит математическая основа. возьмите, например, номер 6. В двоичном виде это 0110. Тогда для представления -6 вам нужно применить на нем алгоритм комплемента двух.

Алгоритм состоит в том, чтобы скопировать все цифры справа налево. В первый раз, когда вы сталкиваетесь с 1, вы оставите его как есть, но с этого момента вы инвертируете все цифры по мере продвижения вперед. В этом примере переходим направо влево: сначала имеем 0. Тогда мы имеем 1. Скопируем его, так что между тем у нас есть 10. Так как мы столкнулись с 1, теперь нам нужно инвертировать все биты. Итак, следующий - 1, мы копируем его как 0, поэтому теперь имеем 010. Самый левый бит равен 0, поэтому мы инвертируем его на 1, и поэтому мы получаем 1010. Это -6 в 4-х значении. Отрицательные числа в двух дополнениях всегда имеют 1 для MSB (самый левый бит - самый значительный бит).

Прежде чем продолжить, есть короткий путь для преобразования. вы просто инвертируете все биты, а затем добавляете 1 и получаете тот же результат. Если мы инвертируем 0110, получаем 1001. Добавление 1 дает снова 1010. Не знаю, как это работает, но это так.

Сколько стоит 8 - 6? Это как 8 + (-6). В двух дополнениях это 1000 + 1010 = 10010

Поскольку мы работаем с четырьмя цифрами, мы обрезаем MSB и получаем 0010, который равен 2 - 8 - 6. Он работает.

Если вы берете -6 (1010) и снова применяете дополнение к нему, вы получаете (используя второй метод) инвертирование (1010) + 1 = 0101 + 1 = 0110 = 6. Таким образом, применяя алгоритм дополнения 2 к отрицательные числа показывают их абсолютную величину.

И теперь мы можем перейти ко второй части вашего вопроса: 1110. В мире с положительными числами это 14. Но в работе как положительных, так и отрицательных чисел мы видим, что поскольку MSB (самый значащий бит) в этом числе равно 1, число отрицательно. Как и в примере -6, применение к нему двух дополнений даст его абсолютное значение. Следовательно: Инверсия (1110) + 1 = 0001 + 1 = 0010 = 2. Таким образом, 1110 равно -2.

Я верю, что в вопросе есть количество цифр. Если k равно 5, то как мы представляем -2?

Чтобы ответить на это, мы начинаем с 2 представленных в 5-значных цифрах, а затем применяем преобразование дополнений двух.

2 является 00010. двоек complent на нем инвертный (00010) + 1 = 11101 + 1 = 11110.

можно сделать вывод, что если бы мы имели 8 бит, то -2 будет 11111110.

Это явление называется расширением знака. В нем говорится, что если отрицательное число может быть представлено в k бит, то: a) MSB будет 1, и b) если вы хотите использовать больше, чем k бит, тогда все биты из исходного MSB и слева будут все 1.

И снова для этого есть математика, чтобы доказать это, с которым я не знаком.

Кстати, вы можете посмотреть на моем сайте. Случилось так, что ваш вопрос касается именно той проблемы, которую я решаю в продукте под названием ChordBits, где вы можете включать и выключать биты, и среди других вариантов вы можете применить на них два дополнения и посмотреть, как он выглядит (версия условно-бесплатной версии полностью функциональная). www.codechords.com

Cheers

+0

Интересно отметить, что применение формулы суммирования бесконечного экспоненциального ряда для вычисления суммы [i = 0..inf] (2^n) дает -1. Поэтому, если рассматривать наиболее значимый бит как знак, выведенный из бесконечного числа бит, форма комплемента двух компьютеров соответствует математическому значению двоичных чисел. – supercat

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

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