Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Отрицательные двоичные числа

Поскольку сложение выполняется легко, мы можем выполнить операцию вычитания с помощью той же техники, просто сделав одно из чисел отрицательным. Например, задача вычитания 7–5 по сути такая же, как задача сложения 7 + (-5).

Поскольку мы уже знаем, как представлять положительные числа в двоичном формате, все, что нам нужно знать сейчас, - это как представлять их отрицательные аналоги, и мы сможем выполнять вычитание.

Обычно мы представляем отрицательное десятичное число, помещая знак минус непосредственно слева от самой значащей цифры, как и в приведенном выше примере, с -5. Однако вся цель использования двоичной записи заключается в создании схем включения / выключения, которые могут представлять битовые значения в терминах напряжения (2 альтернативных значения:«высокий» или «низкий»).

В этом контексте мы не можем позволить себе роскошь третьего символа, такого как знак «минус», поскольку эти цепи могут быть только включены или выключены (два возможных состояния). Одно из решений - зарезервировать бит (схему), который ничего не делает, кроме как представляет математический знак:


Как видите, мы должны быть осторожны, когда начинаем использовать биты для каких-либо целей, кроме стандартных значений, взвешенных по местам. В противном случае 1101 2 может быть неверно истолковано как число тринадцать, когда на самом деле мы имеем в виду отрицательную пятерку.

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

В приведенном выше примере я ограничился представлением чисел от отрицательной семи (1111 2 ) до положительной семи (0111 2 ), и не более того, сделав четвертый бит битом «знака». Только предварительно установив эти пределы, я могу избежать путаницы отрицательного числа с большим положительным числом.

Представляем отрицательные пять как 1101 2 является примером системы знак-величина отрицательной двоичной системы счисления. Используя крайний левый бит в качестве индикатора знака, а не значения, взвешенного по местам, я жертвую «чистой» формой двоичной записи ради чего-то, что дает мне практическое преимущество:представления отрицательных чисел.

Крайний левый бит читается как знак, положительный или отрицательный, а оставшиеся биты интерпретируются в соответствии со стандартной двоичной записью:слева направо, помещайте веса, кратные двум.

Дополнение

Каким бы простым ни был подход «знак-величина», он не очень практичен для арифметических целей. Например, как мне добавить минус пять (1101 2 ) к любому другому числу, используя стандартную технику двоичного сложения?

Мне пришлось бы изобрести новый способ выполнения сложения, чтобы оно сработало, и если я сделаю это, я мог бы с таким же успехом просто выполнить работу с вычитанием от руки; нет арифметических преимуществ в использовании отрицательных чисел для вычитания путем сложения, если мы должны делать это со знаковой нумерацией, и это было нашей целью!

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

С помощью этой стратегии мы назначаем крайний левый бит для определенной цели, как мы это делали с подходом «знак-величина», определяя наши пределы числа так же, как и раньше. Однако на этот раз крайний левый бит - это больше, чем просто знаковый бит; скорее, он обладает отрицательной числовой массой. Например, значение отрицательных пяти будет представлено следующим образом:

  

Когда три правых бита могут представлять величину от нуля до семи, а крайний левый бит представляет либо ноль, либо отрицательную восьмерку, мы можем успешно представить любое целое число от отрицательной семи (1001 2 =-8 10 + 1 2 =-7 10 ) до положительной семи (0111 2 =0 10 + 7 10 =7 10 ).

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

  

Обратите внимание, что отрицательные двоичные числа в правом столбце, представляющие собой сумму общих трех правых битов плюс отрицательные восемь крайнего левого бита, не «считаются» в той же последовательности, что и положительные двоичные числа в левом столбце.

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

Дополнение до двух

Эти правые три бита называются дополнением до двух соответствующего положительного числа. Рассмотрим следующее сравнение:

  

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

К счастью, есть простой способ определить два дополнения для любого двоичного числа:просто инвертировать все биты этого числа, заменив все единицы на 0 и наоборот (чтобы получить то, что называется дополнением до единицы), а затем добавить единицу! Например, чтобы получить двойное дополнение до пяти (101 2 ), мы сначала инвертируем все биты, чтобы получить 010 2 («дополнение до единицы»), затем добавьте единицу, чтобы получить 011 2 , или -5 10 в трехбитовой форме с дополнением до двух

Интересно, что генерация двух дополнений двоичного числа работает одинаково, если вы манипулируете всеми битами, включая самый левый (знаковый) бит, одновременно с битами величины. Давайте попробуем это сделать с первым примером, преобразовав положительную пятерку в отрицательную пятерку, но выполнив процесс дополнения для всех четырех битов.

Мы должны обязательно включить знаковый бит 0 (положительный) в исходное число, пять (0101 2 ). Сначала инвертируем все биты, чтобы получить дополнение до единицы:1010 2 . Затем, добавляя единицу, получаем окончательный ответ:1011 2 , или -5 10 выражается в четырехбитовой форме с дополнением до двух.

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

Здесь два дополнения до пяти (0000101 2 ) будет 1111011 2 . Положительная пятерка в этой системе будет представлена ​​как 00000101 2 , а отрицательная пять как 11111011 2 .

СВЯЗАННЫЕ РАБОЧИЕ ТАБЛИЦЫ:


Промышленные технологии

  1. 3-битный двоичный счетчик
  2. Восьмеричное и шестнадцатеричное исчисление
  3. Числа против нумерации
  4. Двоичное вычитание
  5. Отрицательный отзыв
  6. Java-алгоритмы
  7. Числа в С++
  8. МАТЛАБ — Числа
  9. Питон — Числа
  10. Начало работы с Go on PLCnext