#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-битный полный сумматор
Создание полного сумматора — это всего лишь 2 полусумматора. Который получает биты A, B и the Cin
от последнего полного сумматора в цепочке полных сумматоров для сложения.
4-разрядный полный сумматор
Сколько бы битов вам ни нужно сложить, вы всегда можете использовать последний и «неиспользуемый» Cout
, чтобы определить, переполняется результат или нет.