|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.11.2012, 16:16 | #1 |
Регистрация: 22.05.2012
Сообщений: 9
|
Сумматоры
Здравствуйте. Нужно сделать сумматор в Turbo Pascal. Каким образом? Нет идей, совершенно..
|
19.11.2012, 16:21 | #2 |
Регистрация: 22.05.2012
Сообщений: 9
|
Ну для начала конечно вводим переменные, и т.п.
Не понимаю сам сумматор. Что за три входа и два выхода? |
19.11.2012, 17:52 | #3 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Цитата:
И есть 2 выхода - т.е. результат. |
|
20.11.2012, 05:17 | #4 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
Я полагаю, тебе нужен двоичный сумматор. Это устройство, которое работает с одноразрядными двоичными числами. А именно - суммирует их, то есть находит сумму двух чисел. Почему при этом входа не два (слагаемые), а три, а выход не один (сумма), а два? Потому что есть еще признак переполнения (перенос разряда на следующую операцию). Ты умеешь складывать "в столбик"? Когда складываешь два разряда, может произойти _переполнение_ - то есть, результат превышает значение, которое можно записать одной цифрой. В таких случаях говорят типа "два пишем, один в уме". Вот этот "один в уме" - это и есть тот самый загадочный второй выход )), который идет в дополнение к сумме разрядов. А третий вход - это признак переполнения предыдущей операции (то есть тот самый 1, который уже был в уме).
Обычно работа подобных устройств описывается таблицей, в которой каждому набору сигналов (то есть чисел 0 и 1) на входе соответствует набор сигналов на выходе. В такой таблице должны быть описаны все возможные комбинации на входе. Вот тебе пример одной строки в такой таблице, соответствующий сложению 1 + 1 при признаке переполнения, равном 0 Код:
Целиком и полностью такую таблицу ты либо можешь написать сама, либо посмотреть в Вики, она там есть (ищи на слово "сумматор"). Программа же, я полагаю, должна просто реализовывать такую таблицу, вот и все. Как именно это делать - вопрос предпочтений самого программиста (либо требований, предъявляемых преподавателем). Можно делать "чисто" - по таблице, с использованием многочисленных операторов if ... then, а можно "грязно", учитывая, что Pascal на самом деле уже умеет складывать )). Вот тебе в качестве примера "грязная" реализация. Код:
Успехов тебе.
Предпочитаю на "ты".
|