前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【LeetCode】:01——不用加号的加法

【LeetCode】:01——不用加号的加法

作者头像
WEBJ2EE
发布2020-11-05 10:27:19
1K0
发布2020-11-05 10:27:19
举报
文章被收录于专栏:WebJ2EE
代码语言: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/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WebJ2EE 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档