Электроника:Цифровая электроника/Двоичная арифметика/Двоичное вычитание: различия между версиями

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


Когда мы складываем эти два двоичных числа вместе, то, что мы это фактически делаем с MSB – вычитаем MSB нижнего числа из MSB верхнего числа. При вычитании никто никогда не «переносит» цифру или бит на следующий левый весовой коэффициент.
Когда мы складываем эти два двоичных числа вместе, то, что мы это фактически делаем с [[MSB]] – вычитаем [[MSB]] нижнего числа из [[MSB]] верхнего числа. При вычитании никто никогда не «переносит» цифру или бит на следующий левый весовой коэффициент.


Давайте выполним другой пример, на этот раз с бо́льшими (в абсолютном значении) числами. Сложим -25<sub>10</sub> и 18<sub>10</sub>. Для начала определимся, насколько большим должно быть наше двоичное битовое поле.
Давайте выполним другой пример, на этот раз с бо́льшими (в абсолютном значении) числами. Сложим -25<sub>10</sub> и 18<sub>10</sub>. Для начала определимся, насколько большим должно быть наше двоичное битовое поле.
Строка 72: Строка 72:
{{Навигационная таблица/Электроника}}
{{Навигационная таблица/Электроника}}
{{Навигационная таблица/Телепорт}}
{{Навигационная таблица/Телепорт}}
[[Категория:Цифровая электроника]]
[[Категория:Двоичная арифметика]]
[[Категория:Двоичное вычитание]]

Версия от 09:49, 5 ноября 2021

Перевод: Макаров В. (valemak)
Проверка/Оформление/Редактирование: Мякишев Е.А.


Двоичное вычитание[1]

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

Как мы выяснили в предыдущем разделе, можно представлять отрицательные двоичные числа, используя метод «дополнения до двух» и экстрабит для указания отрицательного разряда. Мы будем использовать эти отрицательные двоичные числа для вычитания путем сложения. Вот пример задачи, которую нужно выполнить:

Вычитание: 710 - 510
Эквивалентное сложение: 710 + (-510)

Если всё, что нам нужно сделать, это представить в двоичной форме семёрку и отрицательную пятёрку (с дополнением до двух), то нам хватит всего трёх битов для, собственно, самих величин + экстрабит для отрицательного веса:

Положительное «семь» = 01112
Отрицательное «пять» = 10112

Теперь давайте оба числа сложим «столбиком»:

Рис. 1. Складываем столбиком двоичные 100111 и 010010.
Рис. 1. Складываем столбиком двоичные 100111 и 010010.

Отбросим «лишний» пятый бит, получаем ответ: 00102

Поскольку мы уже определили наше числовое битовое поле как «три бита + экстрабит отрицательного веса» (т.е. всего 4 бита), тогда пятый бит нужно отбросить, что даст результат 00102 (или положительные 210), что и является правильным ответом.

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

Когда мы складываем эти два двоичных числа вместе, то, что мы это фактически делаем с MSB – вычитаем MSB нижнего числа из MSB верхнего числа. При вычитании никто никогда не «переносит» цифру или бит на следующий левый весовой коэффициент.

Давайте выполним другой пример, на этот раз с бо́льшими (в абсолютном значении) числами. Сложим -2510 и 1810. Для начала определимся, насколько большим должно быть наше двоичное битовое поле.

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

+2510 = 0110012 (показаны все 6 бит)

Инвертируем (дополняем до единицы): 0110012 → 1001102.

Дополняем до двух: 1001102 + 0000012 = 1001112.

Итак, -2510 = 1001112.

Фактически, мы представляем отрицательные двадцать пять, используя шестой бит (экстрабит) обозначающий отрицательные тридцать два плюс положительные семь (710 = 1112). Второе число в двоичный вид привести проще: 1810 = 0100102.

Ну что ж, складываем «столбиком» оба числа в двоичной форме, смотрим, что получается:

Рис. 2. Складываем столбиком двоичные 100111 и 010010.
Рис. 2. Складываем столбиком двоичные 100111 и 010010.

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

(1 × -3210) + (1 × 1610) + (1 × 810) + (0 × 410) + (0 × 210) + (1 × 110) = -3210 + 2510 = -710.

И правда, -710 – это и есть сумма -2510 + 1810.

См.также

Внешние ссылки