2015-03-02 30 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

相關問題