C 语言独自完成设计一个 8 位加法器,计算只用非与或(!, &&,‖)三种逻辑运算实现,不能用按位运算符
时间: 2023-05-29 22:05:13 浏览: 130
VHDL实例8位加法器与乘法器设计
&, |) 逻辑运算符实现,不使用任何其他运算符(如加减乘除、移位等)。以下是一个可能的实现:
```c
#include <stdio.h>
int add8(int a, int b) {
int sum = 0;
int carry = 0;
int mask = 1;
for (int i = 0; i < 8; i++) {
int bitA = (a & mask) >> i;
int bitB = (b & mask) >> i;
int bitSum = (!bitA & !bitB & carry) | (!bitA & bitB & !carry) | (bitA & !bitB & !carry) | (bitA & bitB & carry);
sum |= bitSum << i;
carry = (!bitA & !bitB) | (!bitA & carry) | (!bitB & carry);
mask <<= 1;
}
return sum;
}
int main() {
int a = 0b10101010;
int b = 0b01010101;
int sum = add8(a, b);
printf("%d + %d = %d\n", a, b, sum);
return 0;
}
```
该函数传入两个 8 位整数 a 和 b,返回它们的和。使用一个循环遍历 a 和 b 的每一位,并计算出它们的和以及可能的进位。最终将每一位的和按位或起来,得到最终的和。
阅读全文