剑指 Offer 65. 不用加减乘除做加法

描述

写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。

分析

a ^ b 等同于 a + b且不做进位(无进位和)。
(a & b) << 1等同于 a + b的进位(进位 )。
因此 a+b等于(a ^ b)+((a & b) << 1) ,但这个相加仍然存在进位,所以需要一直递归此过程,直到进位(a & b) << 1为0,此时的a ^ b便是 a+b的最终结果。

为什么进位一定会变为0? 我的理解是进位一直在不断的向左移动,因为相加数值的二进制的1的个数是有限的,相加不可能一直存在进位,所以进位一定会最终变为0,即不在存在进位,这时候的无进位和就是和。

class Solution {public int add(int a, int b) {int i = a ^ b;int j = (a & b) << 1;if(j == 0){return i;}return add(i,j);}
}

0位运算/数学简单 剑指 Offer 65. 不用加减乘除做加法相关推荐

  1. 剑指 Offer 65. 不用加减乘除做加法(位运算、递归、迭代)

    一.题目 剑指 Offer 65. 不用加减乘除做加法 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."*" ...

  2. java 加法不用_【Java】 剑指offer(65) 不用加减乘除做加法

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×.÷四则运算符号. 思路 对数字做运算,除了四则运算外,只剩下位 ...

  3. 【LeetCode】剑指 Offer 65. 不用加减乘除做加法

    [LeetCode]剑指 Offer 65. 不用加减乘除做加法 文章目录 [LeetCode]剑指 Offer 65. 不用加减乘除做加法 一.位运算 一.位运算 本题考察对位运算的灵活使用,即使用 ...

  4. 【LeetCode笔记】剑指 Offer 65. 不用加减乘除做加法(Java、位运算、二刷)

    文章目录 题目描述 思路 & 代码 二刷 题目描述 讲道理,感觉算有点难度的题目了= =,还是需要时不时看看. 思路 & 代码 正负数情况可以不考虑(补码) 核心:加法 = 进位和 + ...

  5. 剑指 Offer 65. 不用加减乘除做加法(位运算,计组原理:补码、加法器)

    一.基础知识 做这题需要用到计算机组成原理的基础知识:二进制的表示以及加法器. 简要提下知识点,最好再去研究下来龙去脉,加深理解. (1)二进制加法 a b 非进位和s 进位c 0 0 0 0 0 1 ...

  6. 剑指 Offer 65. 不用加减乘除做加法

    题目链接: 力扣https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/ [分析]对于两个二进制的加法,他们的本 ...

  7. leetcode每日一题第三十二天-剑指 Offer 65. 不用加减乘除做加法(easy??middle了吧)

    前言 通过leetcode记录自己每天坚持刷题,以此监督自己的学习.不能放假了就懈怠

  8. 【剑指Offer】不用加减乘除做加法(异或:无进位的和 + 相与并左移1位:进位和)

    这里写目录标题 题目描述 位运算(异或+相与并左移) 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 位运算(异或+相与并左移) 两个数异或:相当于不考虑进位 ...

  9. 剑指offer:不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 解题思路 class Solution { public:int Add(int num1, int num2 ...

最新文章

  1. JAVA min()_Java min()方法
  2. 【正一专栏】扶不上墙的大巴黎和自信过度的热刺
  3. python中列表的运用_python中列表的应用
  4. 计算机行业人员的鄙视链
  5. (史上最全)104个实用网络爬虫合集。
  6. 你犯了没?电脑最忌讳的18个小动作之三
  7. leetcode 81 Search in Rotated Sorted Array II ----- java
  8. (转)你真的会写单例模式吗——Java实现
  9. Oracle学习笔记:oracle的启动过程
  10. UILabel-IOS开发
  11. FFmpeg学习(9)—— 调整播放速度
  12. 文本区 JTextArea 的使用
  13. 【工具推荐】个人本地 markdown 知识图谱软件 Obsidian
  14. FMS飞行模拟器简介
  15. 尚硅谷数据结构与算法(Java)--14--插入排序
  16. DATAGUARD手记(DUPLICATE)(四)
  17. 一花独放不是春 远光软件区块链业务赚钱背后 链圈仍在过冬
  18. python 论文写作_AI基础:论文写作工具
  19. 网页中Html布局分解,因式分解怎么求
  20. 数字减影血管造影技术(DSA)

热门文章

  1. 腾讯面试官推荐python入门书籍
  2. 189Echarts - 日历坐标系(Custom Calendar Icon)
  3. 如何利用showdoc自动生成API文档
  4. hosts文件修改后无法保存问题
  5. socket客户端和服务器通信协议,51. Socket服务端和客户端使用TCP协议通讯
  6. 【Python】Windows:PyCharm 社区版开源免费安装与汉化
  7. 华为员工家属:华为人收入高背后是全家人的付出
  8. windows蓝牙卡顿
  9. 金融海啸中,我踉跄进入了职场,但却告别了我已做了两年的web开发
  10. 人人都会的Mac画中画模式,就差你了