Электроника:Цифровая электроника/Двоичная арифметика/Двоичное вычитание: различия между версиями
Myagkij (обсуждение | вклад) (добавление внутренних ссылок на страницу, добавление в категории) |
Нет описания правки |
||
Строка 64: | Строка 64: | ||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 70: | Строка 70: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Электроника}} | {{Навигационная таблица/Портал/Электроника}} | ||
[[Категория:Цифровая электроника]] | [[Категория:Цифровая электроника]] | ||
[[Категория:Двоичная арифметика]] | [[Категория:Двоичная арифметика]] | ||
[[Категория:Двоичное вычитание]] | [[Категория:Двоичное вычитание]] |
Текущая версия от 21:51, 22 мая 2023
Двоичное вычитание[1]
Мы, само собой, можем вычесть одно двоичное число из другого, используя адаптированные стандартные методы для десятеричных чисел (т.е. вычитая в столбик – производя вычитание каждой пары битов справа-налево, «заимствуя» по мере необходимости из битов левее). Однако, если бы мы вместо вычитания использовали уже знакомую (и более простую) технику двоичного сложения, это было бы предпочтительнее.
Как мы выяснили в предыдущем разделе, можно представлять отрицательные двоичные числа, используя метод «дополнения до двух» и экстрабит для указания отрицательного разряда. Мы будем использовать эти отрицательные двоичные числа для вычитания путем сложения. Вот пример задачи, которую нужно выполнить:
Вычитание: 710 - 510 Эквивалентное сложение: 710 + (-510) |
Если всё, что нам нужно сделать, это представить в двоичной форме семёрку и отрицательную пятёрку (с дополнением до двух), то нам хватит всего трёх битов для, собственно, самих величин + экстрабит для отрицательного веса:
Положительное «семь» = 01112 Отрицательное «пять» = 10112 |
Теперь давайте оба числа сложим «столбиком»:
Отбросим «лишний» пятый бит, получаем ответ: 00102
Поскольку мы уже определили наше числовое битовое поле как «три бита + экстрабит отрицательного веса» (т.е. всего 4 бита), тогда пятый бит нужно отбросить, что даст результат 00102 (или положительные 210), что и является правильным ответом.
Если непонятно, почему мы отбрасываем этот лишний пятый бит, можно вспомнить, что крайний левый бит младшего числа имеет отрицательный вес, в данном случае он равен отрицательной восьмёрке.
Когда мы складываем эти два двоичных числа вместе, то, что мы это фактически делаем с MSB – вычитаем MSB нижнего числа из MSB верхнего числа. При вычитании никто никогда не «переносит» цифру или бит на следующий левый весовой коэффициент.
Давайте выполним другой пример, на этот раз с бо́льшими (в абсолютном значении) числами. Сложим -2510 и 1810. Для начала определимся, насколько большим должно быть наше двоичное битовое поле.
Чтобы представить наибольшее (по модулю) число в нашей задаче, то есть двадцать пять, нам нужно как минимум пять бит, и кроме того нужен шестой экстрабит для отрицательного веса. Давайте начнём с того, что представим положительные двадцать пять в двоичном виде, затем найдём дополнение до двух и объединим всё это в одну нумерацию:
+2510 = 0110012 (показаны все 6 бит) |
Инвертируем (дополняем до единицы): 0110012 → 1001102.
Дополняем до двух: 1001102 + 0000012 = 1001112.
Итак, -2510 = 1001112.
Фактически, мы представляем отрицательные двадцать пять, используя шестой бит (экстрабит) обозначающий отрицательные тридцать два плюс положительные семь (710 = 1112). Второе число в двоичный вид привести проще: 1810 = 0100102.
Ну что ж, складываем «столбиком» оба числа в двоичной форме, смотрим, что получается:
Поскольку слева не было «лишних» битов (ответ тоже 6-битный), то нет и битов, которые нужно отбрасывать. Крайний левый экстрабит равен 1, что означает, что ответ отрицательный (в форме дополнения до двух), как и должно быть. Преобразуя ответ в десятеричную форму, суммируя все биты, умноженные на их соответствующие значения веса, получаем:
(1 × -3210) + (1 × 1610) + (1 × 810) + (0 × 410) + (0 × 210) + (1 × 110) = -3210 + 2510 = -710.
И правда, -710 – это и есть сумма -2510 + 1810.
См.также
Внешние ссылки