如何用半加器构建一个全加器?
How do I build a full adder with a half adder?
这是我的半加器:
void HalfAdder(int a, int b, int * addrCarry, int * addrSum){
*addrCarry = a && b;
*addrSum = a != b;
}
我如何把它变成一个全加器?
这是使用半加器实现全加器的方式:
所以翻译成 C 很简单:
void FullAdder(int a, int b, int cin, int * addrCarry, int * addrSum){
int s1, c1, c2; // For intermediate results
HalfAdder(a, b, &c1, &s1); // First adder stage
HalfAdder(cin, s1, &c2, addrSum); // Second adder stage
*addrCarry = c1 || c2; // The OR stage
}
这是我的半加器:
void HalfAdder(int a, int b, int * addrCarry, int * addrSum){
*addrCarry = a && b;
*addrSum = a != b;
}
我如何把它变成一个全加器?
这是使用半加器实现全加器的方式:
所以翻译成 C 很简单:
void FullAdder(int a, int b, int cin, int * addrCarry, int * addrSum){
int s1, c1, c2; // For intermediate results
HalfAdder(a, b, &c1, &s1); // First adder stage
HalfAdder(cin, s1, &c2, addrSum); // Second adder stage
*addrCarry = c1 || c2; // The OR stage
}