Binary 仅使用逻辑运算符的两个int之和

Binary 仅使用逻辑运算符的两个int之和,binary,logic,Binary,Logic,到目前为止,我找到了两位和一位进位求和的进位方法:int carry=a&b | a&c | b&c 我找到了获得两位和一个进位的最终输出的方法:int-output=a^b^c 我还发现了一种方法,可以得到一个int的和并加上一个:addOne(2)=3 我知道我需要使用这三种方法(进位(a,b,c),输出(a,b,c),加法(x))来获得两位的总和 对于一位(c0为进位): s0=a0^b0^c0; cout0=(a0和b0)|(c0和(a0^b0)); 将两个全加器连接在一起(cout到

到目前为止,我找到了两位和一位进位求和的进位方法:
int carry=a&b | a&c | b&c

我找到了获得两位和一个进位的最终输出的方法:
int-output=a^b^c

我还发现了一种方法,可以得到一个int的和并加上一个:
addOne(2)=3

我知道我需要使用这三种方法(进位(a,b,c),输出(a,b,c),加法(x))来获得两位的总和

对于一位(
c0
为进位):

s0=a0^b0^c0;
cout0=(a0和b0)|(c0和(a0^b0));
将两个全加器连接在一起(cout到cin)以获得一个2位数字:

c0=0;
s0=a0^b0^c0;
cout0=(a0和b0)|(c0和(a0^b0));
s1=a1^b1^cout0;
cout1=(a1和b1)|(cout0和(a1^b1));
我将把简化留给读者作为练习(什么是
XOR 0
A和0
,等等?)

您还可以查看进位先行加法器的逻辑,但是由全加器构成的ripple进位加法器是最容易掌握的