#include <stdio.h> #include <stdlib.h> // 与门 int AND(int A, int B) { return A & B; } void testAND() { printf("0 AND 0 => %d\r\n", AND(0, 0)); printf("0 AND 1 => %d\r\n", AND(0, 1)); printf("1 AND 0 => %d\r\n", AND(1, 0)); printf("1 AND 1 => %d\r\n", AND(1, 1)); } // 非门 int NOT(int A) { return !A; } void testNOT() { printf("NOT 0 => %d\r\n", NOT(0)); printf("NOT 1 => %d\r\n", NOT(1)); } //或门 int OR(int A, int B) { return A | B; } void testOR() { printf("0 OR 0 => %d\r\n", OR(0, 0)); printf("0 OR 1 => %d\r\n", OR(0, 1)); printf("1 OR 0 => %d\r\n", OR(1, 0)); printf("1 OR 1 => %d\r\n", OR(1, 1)); } // 与非门 int NAND(int A, int B) { return NOT(AND(A, B)); } void testNAND() { printf("0 NAND 0 => %d\r\n", NAND(0, 0)); printf("0 NAND 1 => %d\r\n", NAND(0, 1)); printf("1 NAND 0 => %d\r\n", NAND(1, 0)); printf("1 NAND 1 => %d\r\n", NAND(1, 1)); } //或非门 int NOR(int A, int B) { return NOT(OR(A, B)); } void testNOR() { printf("0 NOR 0 => %d\r\n", NOR(0, 0)); printf("0 NOR 1 => %d\r\n", NOR(0, 1)); printf("1 NOR 0 => %d\r\n", NOR(1, 0)); printf("1 NOR 1 => %d\r\n", NOR(1, 1)); } //异或门 int EOR(int A, int B) { return A == B ? 0:1; } void testEOR() { printf("0 EOR 0 => %d\r\n", EOR(0, 0)); printf("0 EOR 1 => %d\r\n", EOR(0, 1)); printf("1 EOR 0 => %d\r\n", EOR(1, 0)); printf("1 EOR 1 => %d\r\n", EOR(1, 1)); } int main() { testAND(); testNOT(); testOR(); testNAND(); testNOR(); testEOR(); system("pause"); return 0; } 按规律添加上全加器的功能
时间: 2024-04-10 11:27:08 浏览: 118
以下是添加全加器功能的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 与门
int AND(int A, int B) {
return A & B;
}
// 异或门
int XOR(int A, int B) {
return A ^ B;
}
// 全加器
int fullAdder(int A, int B, int Cin) {
int sum = XOR(XOR(A, B), Cin);
int cout = OR(AND(A, B), AND(Cin, XOR(A, B)));
return (cout << 1) | sum;
}
void testFullAdder() {
printf("0 + 0 + 0 => %d\r\n", fullAdder(0, 0, 0));
printf("0 + 0 + 1 => %d\r\n", fullAdder(0, 0, 1));
printf("0 + 1 + 0 => %d\r\n", fullAdder(0, 1, 0));
printf("0 + 1 + 1 => %d\r\n", fullAdder(0, 1, 1));
printf("1 + 0 + 0 => %d\r\n", fullAdder(1, 0, 0));
printf("1 + 0 + 1 => %d\r\n", fullAdder(1, 0, 1));
printf("1 + 1 + 0 => %d\r\n", fullAdder(1, 1, 0));
printf("1 + 1 + 1 => %d\r\n", fullAdder(1, 1, 1));
}
int main() {
testFullAdder();
system("pause");
return 0;
}
```
在这个示例中,我们添加了一个名为 `fullAdder` 的函数,该函数接受三个输入参数 `A`、`B` 和 `Cin`,分别代表两个二进制位和进位。在函数内部,我们使用异或门和与门来计算出和 `sum` 和进位 `cout`。最后,我们将进位左移一位并与和进行按位或运算,得到结果。
通过调用 `testFullAdder` 函数,我们可以测试全加器的各种输入组合并打印结果。
请注意,为了使全加器正常工作,我们需要确保 `AND`、`OR` 和 `XOR` 函数已经定义。你可以使用之前提供的函数定义或者根据需要自行编写这些函数。
希望这可以帮助到你!
阅读全文