剑指Offer - 九度1507 - 不用加减乘除做加法2013-11-29 20:00 题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 输入: 输入可能包含多个测试样例.对于每个测试案例,输入为两个整数m和n(1<=m,n<=1000000). 输出: 对应每个测试案例,输出m+n的值. 样例输入: 3 4 7 9 样例输出: 7 16 题意分析: 求两个数的和而不能用加减乘除,很明显又得借助位运算了.回想一下学Verilog时加法器的实现,能记住…
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目分析 不用加减乘除做加法,我第一时间想到的就是用位运算,毕竟计算机是二进制的,所有的操作都是以位运算为基础. 那么假设我们要求7+5=12,二进制就是111+101=1100,我们发现也就是需要处理二进制进位的问题,可是如何处理二进制进位呢? 如果学过计算机体系结构中的进位器就知道怎么做了,不过没学过也没关系,我们可以一步一步的实验,反正位运算就那几种. 先实验下异或:res1=111^101=010,…
不用加减乘除做加法 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 写一个函数, 求两个整数之和, 要求在函数体内不得使用+, -, *, /四则运算符号. 不能使用运算符号, 使用位运算, 第一步异或运算选位, 第二步与运算进位. 代码: /* * main.cpp * * Created on: 2014.7.13 * Author: Spike */ #include <iostream> #include <list>…
// 面试题65:不用加减乘除做加法 // 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×.÷ // 四则运算符号. #include <iostream> int Add(int num1, int num2) { int sum, carry; do { sum = num1 ^ num2;//第一步,使用异或求和(没有进位) carry = (num1 & num2) << ;//第二步,使用与检查同时为1的位,作为进位,左移一位 num1 = s…
分析: (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向前产生一个进位.可看成是先做位与运算,然后向左移…
面试题 65. 不用加减乘除做加法 题目描述 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. Java 实现 public class Solution {     public int Add(int num1,int num2) {         while (num2!=0) {             int temp = num1^num2;             num2 = (num1&num2)<<1;             …
剑指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…