剑指offer42:不用加减乘除做加法】的更多相关文章

题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 分析: "^"是不带进位的加法. "&"可以得到所有进位位组成的数. 我们只需要将不进位加后的数与所有进位位组成的数右移一位的结果相加就可以得到和. 不过我们在上面一步的加法过程中,我们也只能用"^"不进位的加法. 所以我们要循环之前的步骤直到不出现进位的情况,这样我们的"^"就和普通加法一样了. 代码: class Solut…
/************************************************************************* > File Name: 47_AddTwoNumbers.c > Author: Juntaran > Mail: JuntaranMail@gmail.com > Created Time: 2016年09月04日 星期日 21时33分07秒 ********************************************…
位运算,好久没用了 &:都为1,结果为1 ^:相同为0,不同为1 |:有1,结果为1 <<:左移 ------------------------------------------------------------------------------ 时间限制:1秒 空间限制:32768K 热度指数:97386 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 思路: 1.用位运算计算各个位上相加的结果 2.考虑各个位上进位的情况 3.将1结…
package Other; /** * 不用加减乘除做加法 * 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. * 思路:位运算 * 1.两个数异或:相当于每一位相加,而不考虑进位: * 2.两个数相与,并左移一位:相当于求得进位: * 3.将上述两步的结果相加 */ public class Solution14 { public static void main(String[] args) { Solution14 solution14 = new Sol…
分析: (1)十进制加法分三步:(以5+17=22为例) 1. 只做各位相加不进位,此时相加结果为12(个位数5和7相加不进位是2,十位数0和1相加结果是1): 2. 做进位,5+7中有进位,进位的值是10: 3. 将前面两个结果相加,12+10=22 (2)这三步同样适用于二进制位运算 1.不考虑进位对每一位相加.0加0.1加1结果都是0,0加1.1加0结果都是1.这和异或运算一样: 2.考虑进位,0加0.0加1.1加0都不产生进位,只有1加1向前产生一个进位.可看成是先做位与运算,然后向左移…
剑指Offer - 九度1507 - 不用加减乘除做加法2013-11-29 20:00 题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 输入: 输入可能包含多个测试样例.对于每个测试案例,输入为两个整数m和n(1<=m,n<=1000000). 输出: 对应每个测试案例,输出m+n的值. 样例输入: 3 4 7 9 样例输出: 7 16 题意分析: 求两个数的和而不能用加减乘除,很明显又得借助位运算了.回想一下学Verilog时加法器的实现,能记住…
剑指offer 65. 不用加减乘除做加法(Leetcode 371. Sum of Two Integers) https://leetcode.com/problems/sum-of-two-integers/ 题目: 写一个函数,求两个整数之和,要求在函数体内不得使用加减乘除这四个符号. 分析: 对于不能使用正常的四则运算符,一般就是使用位运算了.而本题要想实现加法,只能使用异或了. 需要注意的是,加法的时候涉及进位,而进位的实现利用与运算. 此外,进位之后还有可能产生进位,所以要在循环里…
剑指 Offer 65. 不用加减乘除做加法 Offer_65 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2021/2/14 21:49 */ /** * 题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."*"."/" 四则运算符号. */ public class Offer…
剑指 Offer 65. 不用加减乘除做加法 知识点:数学:位运算 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."*"."/" 四则运算符号. 示例 输入: a = 1, b = 1 输出: 2 解法一:位运算 不能用四则运算,那其实可以用的只要逻辑运算和位运算了,这里很明显要用位运算.关键怎么用呢. 我们列一张表其实就可以发现,两个元素如果没有进位也就是不是对应位都是1的时候,相加就和异或运…
[剑指Offer]不用加减乘除做加法 解题报告(Java) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 解题方法 这就是LeetCode的Sum of Two Integers题目,Python版本的比较复杂,所以这里用的Java写的.道理是一样的,通过异或模拟无进位的加法,通过与运算模拟进位. 代码: publ…