1 题目描述

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

2 思路和方法

  位运算符:两个数异或(^)【1^0=1, 1^1=0, 0^0=0, 0^1=1, 5^5=0, 5^0=5】,相当于每一位相加,而不考虑进位;两个数相与(&)【1&0=0;1&1=1;0&0=0】,并左移一位,相当于求得进位;将上述两步的结果相加。

  我们可以用三步走的方式计算二进制值相加: 5-101,7-111

  第一步:异或(^)相加各位的值,不算进位,101^111得到010。
  第二步:相与(&)计算进位值,各位做与操作得到101,再向左移一位得到1010,即(101&111)<<1得到1010。
  第三步重复上述两步, 各位相加 010^1010=1000,进位值为100=(010&1010)<<1。( 010 & 1010 )相当于( 0010 & b1010 ),位数不一样,前面补0。
  继续重复上述两步:各位相加的值=1000^100 = 1100,进位的值=1000^100 = 0000,进位值为0,跳出循环,1100为最终结果 */

3 C++核心代码  

 class Solution {
public:
int Add(int num1, int num2)
{
while(num2!=){
int sum=num1^num2;
num2=(num1&num2)<<;
num1=sum;
}
return num1;
}
};

参考资料

https://blog.csdn.net/feng_zhiyu/article/details/82112291

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

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

    题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 分析: "^"是不带进位的加法. "&"可以得到所有进位位组 ...

  2. 剑指Offer47 不用加减乘除做加法

    /************************************************************************* > File Name: 47_AddTwo ...

  3. 剑指offer--12.不用加减乘除做加法

    位运算,好久没用了 &:都为1,结果为1 ^:相同为0,不同为1 |:有1,结果为1 <<:左移 ----------------------------------------- ...

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

    package Other; /** * 不用加减乘除做加法 * 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. * 思路:位运算 * 1.两个数异或:相当于每一位相加 ...

  5. 剑指Offer - 九度1507 - 不用加减乘除做加法

    剑指Offer - 九度1507 - 不用加减乘除做加法2013-11-29 20:00 题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 输入: 输入可能包 ...

  6. 剑指offer 65. 不用加减乘除做加法(Leetcode 371. Sum of Two Integers)

    剑指offer 65. 不用加减乘除做加法(Leetcode 371. Sum of Two Integers) https://leetcode.com/problems/sum-of-two-in ...

  7. 剑指 Offer 65. 不用加减乘除做加法 + 位运算

    剑指 Offer 65. 不用加减乘除做加法 Offer_65 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...

  8. 【剑指offer】65. 不用加减乘除做加法

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

  9. 【剑指Offer】不用加减乘除做加法 解题报告(Java)

    [剑指Offer]不用加减乘除做加法 解题报告(Java) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...

  10. 剑指offer(48)不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目分析 不用加减乘除做加法,我第一时间想到的就是用位运算,毕竟计算机是二进制的,所有的操作都是以位运算为基础 ...

随机推荐

  1. DB2 sqlCode-668

    客户端调用命令 CALL SYSPROC.ADMIN_CMD('reorg table tablename')

  2. Mybatis自定义控制台打印sql的日志工具

    调试mybatis源码时,想要更改日志的的实现工具,首先需要了解其原理. 源码包里有这部分的解释,翻译如下: Mybatis 的内置日志工厂提供日志功能,内置日志工厂将日志交给以下其中一种工具作代理: ...

  3. 经管/管理/团队经典电子书pdf下载

    卓有有效的管理者 管理的本质 只有偏执狂才能生存 格鲁夫给经理人的第一课 影响力: 你为什么会说“是” 关键影响力:如何调动团队力量 执行 如何完成任务的学问

  4. No value specified for Date

    现象 使用BeanUtils复制对象属性,结果抛出No value specified for Date异常. 原因 是数据源orig有一个参数是java.util.Date类型,没有初始化值,调用了 ...

  5. 网站安全统一监测平台(WebPecker)

    网站安全统一监测平台(WebPecker)_智恒科技http://www.zhihengit.com/html/pro/chanpinfenlei1/2016/0511/135.html [SQL注入 ...

  6. iptables 4张表 5条链

  7. Android输入法遮挡了输入框,使用android:fitsSystemWindows="true"后界面顶部出现白条解决方案

    我的最外层是LinearLayout,自定义CustomLinearLayout继承LinearLayout,重写fitSystemWindows和onApplyWindowInsets两个方法: p ...

  8. 【转载】 tensorflow中 tf.train.slice_input_producer 和 tf.train.batch 函数

    原文地址: https://blog.csdn.net/dcrmg/article/details/79776876 ----------------------------------------- ...

  9. 我的一个PLSQL函数 先查询再插入数据库的函数 动态SQL拼接查询条件、通用游标、记录定义(封装部分查询字段并赋值给游标)、insert select 序列、常量【我】

    先查询再插入数据库的函数 CREATE OR REPLACE FUNCTION F_REVENUE_SI(l_p_cd in Varchar2, l_c_cd in Varchar2, l_prod_ ...

  10. Qt widget中使用QML自定义电池

    1.效果 2.QML 在资源里新建Mybattery.qml: import QtQuick 2.0 import QtQuick 2.12 Item { id: root property colo ...