首页 > 解决方案 > 仅使用逻辑运算符的两个 int 之和

问题描述

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

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

我还找到了一种方法来获取 int 的总和并添加一个:addOne(2) = 3例如。

我知道我需要使用这三种方法(carry(a,b,c)、outpout(a,b,c)、addOne(x))来获得两位的总和。

标签: binarylogic

解决方案


对于一位(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));

我将把简化作为练习留给读者(什么是A XOR 0,A AND 0等?)。

您还可以查看进位超前加法器的逻辑,但由全加器组成的波纹进位加法器是最容易掌握的。


推荐阅读