Почему 011 001 дает мне 011?

#binary

#двоичный

Вопрос:

Я создаю мини-двоичный калькулятор и, используя эту логику, могу комбинировать 2-значные двоичные числа (0-3, в десятичной системе счисления), чтобы вернуть не более 3-значного двоичного числа (0-6, 7 недоступно с тем, что у меня есть):

введите описание изображения здесь

Однако при объединении 3 и 1 возникают проблемы: он возвращает 2, а не 4, тогда как объединение 2 и 2 возвращает 4. Я новичок в двоичных / логических элементах, и мне трудно понять, почему это происходит, и есть ли другой способ упорядочить элементы, чтобы разрешить вывод 4 при объединении 3 и 1?

Комментарии:

1. Опубликуйте свой код, а не ссылку на внешний сайт.

2. Мой «код» — это диаграмма, изображение.

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

4. Сначала попробуйте решить более простую задачу. Создайте набор элементов, где вы можете ввести 3 и 1, а на выходе будет 4, а затем попытайтесь объединить это с тем, что у вас есть. Затем упростите общие вещи.

5. Это не позволило бы мне опубликовать изображение, только ссылку. Спасибо за редактирование, ребята 🙂 И я попробую это

Ответ №1:

Похоже, вы неправильно поняли назначение Cin (carry in) и Cout (carry out) . При всей своей простоте перенос представляет собой переполнение. Который используется для переполнения в следующую цифру сложения.

1-разрядный сумматор

Вы уже правильно определили половинный сумматор. Это просто XOR для sum и AND для Cout (carry out) .

1-разрядный сумматор

1-битный полный сумматор

Создание полного сумматора — это всего лишь 2 полусумматора. Который получает биты A, B и the Cin от последнего полного сумматора в цепочке полных сумматоров для сложения.

1-битный полный сумматор

4-разрядный полный сумматор

Сколько бы битов вам ни нужно сложить, вы всегда можете использовать последний и «неиспользуемый» Cout , чтобы определить, переполняется результат или нет.

4-разрядный полный сумматор