📄 fulladder.c
字号:
/* FullAdder.c */
#include "FullAdder.h"
static void init(FullAdder* t) {
t->ha1 = (HalfAdder*)HalfAdderNew();
t->ha2 = (HalfAdder*)HalfAdderNew(); }
static void set_ab(FullAdder *cthis, int a, int b) {
cthis->ha1->set_digits(cthis->ha1, a, b);
cthis->ha1->run(cthis->ha1);
cthis->c1 = cthis->ha1->get_carry(cthis->ha1);
cthis->s1 = cthis->ha1->get_sum(cthis->ha1);
}
static int set_carry_in(FullAdder *cthis, int ci) {
cthis->ha2->set_digits(cthis->ha2, cthis->s1, ci);
cthis->ha2->run(cthis->ha2);
int c2 = cthis->ha2->get_carry(cthis->ha2);
cthis->sum = cthis->ha2->get_sum(cthis->ha2);
int carry_out = cthis->c1 | c2;
return carry_out;
}
static int get_sum(FullAdder* cthis)
{ return cthis->sum; }
CTOR(FullAdder)
FUNCTION_SETTING(init, init)
FUNCTION_SETTING(set_ab, set_ab)
FUNCTION_SETTING(set_carry_in, set_carry_in)
FUNCTION_SETTING(get_sum, get_sum)
END_CTOR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -