Определите процедуру Scheme (bitAdder xab) для имитации логической схемы, приведенной в соответствии со схемой на рисунке 2. Процедура должна вызывать процедуры шлюза, которые вы определили в вопросе 1, и должна возвращать пару с двумя элементами '(s.c), где s — двоичная сумма a, b и x, а c — перенос. Вы реализуете процедуру в три шага, используя три процедуры, как указано ниже.
Напишите процедуру (sum-bit x a b) для генерации результирующего бита s.
Напишите процедуру (выполнение x a b) для генерации бита переноса c.
Напишите процедуру (bitAdder x a b) для генерации выходной пары (s.c).
До сих пор я определял свои логические элементы для «и», «или» и «исключающее ИЛИ». Я пытался сделать первые две процедуры, но они кажутся неправильными.
(define AND-gate (lambda (a b)
(if (= a b 1)
1
0)))
(define OR-gate (lambda (a b)
(if (= a 1)
1
(if (= b 1)
1
0))))
(define XOR-gate (lambda (a b)
(if (= a b)
0
1)))
(define sum-bit (lambda (x a b)
(XOR-gate a b)
(XOR-gate x (XOR-gate a b))))
(define carry-out (lambda (x a b)
(OR-gate a b)
(AND-gate (OR-gate a b) x)
(AND-gate a b)
(OR-gate (AND-gate a b) (AND-gate (OR-gate a b) x))))
sum-bit
оценивает(XOR-gate a b)
и игнорирует это значение, а затем возвращает(XOR-gate x (XOR-gate a b))
. Вы следуете той же схеме оценки и выбрасывания вcarry-out
. - person molbdnilo   schedule 23.04.2015