fulladder.c

来自「基于ANdroid平台的高欢堂书籍的对应源代码 非常有用」· C语言 代码 · 共 31 行

C
31
字号
/*    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 + =
减小字号Ctrl + -
显示快捷键?