代码语言:javascript复制
目录
1. 题
2. 析
2.1. 位运算
2.2. 半加器(half adder)
2.3. 全加器(full adder)
2.4. 波纹进位加法器 (Ripple Carry Adder)
3. 解
1. 题
2. 析
2.1. 位运算
2.2. 半加器(half adder)
半加器电路是指对两个输入数据位相加,输出一个结果位(S(Sum))和进位(C (Carry out)),没有进位输入的加法器电路。是实现两个一位二进制数的加法运算电路。
注:因为没有低位进位,不能进行完整的加法运算,因此这种加法器叫半加器(Half Adder)。
2.3. 全加器(full adder)
全加器是能够计算低位进位的二进制加法电路。与半加器相比,全加器不只考虑本位计算结果是否有进位,也考虑上一位对本位的进位,可以把多个一位全加器级联后做成多位全加器.
2.4. 波纹进位加法器 (Ripple Carry Adder)
将n个全加器级联起来,就是一个n位的加法器,这就是逐级进位加法器。
3. 解
代码语言:javascript复制/**
* @param {number} a
* @param {number} b
* @return {number}
*/
var add = function(a, b) {
let sum = a ^ b;
let carry = a & b;
while(carry != 0){
carry <<= 1;
a = sum;
b = carry;
sum = a ^ b;
carry = a & b;
}
return sum;
};
参考:
https://leetcode-cn.com/problems/add-without-plus-lcci/