Дополнение от двоих - это метод представления чисел 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
Is k максимальное количество бит? – Glenn