2015-03-02 97 views
0

这是我的半加器:如何用半加器构建一个完整的加法器?

void HalfAdder(int a, int b, int * addrCarry, int * addrSum){ 
    *addrCarry = a && b; 
    *addrSum = a != b; 
} 

如何对待这种情况,使之成为全加器?

+0

需要两个半加器和一个或门。看看最后的两个草图:http://de.wikipedia.org/wiki/Volladdierer – Deduplicator 2015-03-02 21:09:50

回答

1

这是全加器采用半加器如何实现的: enter image description here

所以翻译到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 
} 
+0

Nitpick:建议不要使用'cin'作为变量名称,因为它可能会混淆为'C++ cin'。 – 2015-03-02 21:20:23

相关问题