博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer四十八之不用加减乘除做加法
阅读量:5758 次
发布时间:2019-06-18

本文共 975 字,大约阅读时间需要 3 分钟。

一、题目

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

二、思路

1、 采用位运算的方法,分三步:
  (1)、两个数异或:相当于每一位相加,而不考虑进位
  (2)、两个数相与,并左移一位:相当于求得进位
  (3)、重复步骤1和2,两个数相与的结果为0,和即为两个数异或的结果
2、例子演示:
 
3+11 = ?
 
13 的二进制      1 1 0 1                     -----a        13
11 的二进制      1 0 1 1                     -----b        11  
 (a&b) <<1  ->   1 0 0 1
0                 -----d         18
            a^b  ->     0 1 1
0                   -----e          6
 (d&e) <<1  ->   0 0 1
0 0                 -----f         4
            d^e  ->  1 0 1
0 0                  -----g        20
 (f&g) <<1  ->   0 1
0 0 0                ------h        8
            f^g  ->  1 0
0 0 0                 ------i           16
 (h&i) <<1  ->   0
0 0 0 0
              ------h        0       ---- --------退出循环
            h^i  ->  1 1 0 0 0                ------i           24
在第一步中,采用异或
第二步中,采用按位与,左移一位

三、代码

public class Solution {    public int Add(int num1,int num2) {        while( num2!=0 ){ //当进位等于0的时候,返回异或的结果,即是要求的和            int sum = num1 ^ num2; //两个数异或:相当于每一位相加,而不考虑进位            int carray = (num1 & num2) << 1;//两个数相与:并左移一位:相当于求得进位            num1 = sum;            num2 = carray;        }        return num1;    }}
View Code

---------------------------------------------

参考链接:

https://www.nowcoder.com/questionTerminal/59ac416b4b944300b617d4f7f111b215

转载地址:http://osvkx.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
Android图形显示系统——下层显示4:图层合成上(合成原理与3D合成)
查看>>
Windows 10 技术预览
查看>>
Tomcat http跳转https
查看>>
一个自动布署.net网站的bat批处理实例
查看>>
tomcat 安装
查看>>
我的友情链接
查看>>
Centos6.6安装选包及基础场景说明
查看>>
java基础面试题-1
查看>>
深克隆与序列化效率的比较
查看>>
lamp+nginx代理+discuz+wordpress+phpmyadmin搭建一
查看>>
nagios监控使用139邮箱报警
查看>>
Windows Phone 7 中各种Task解说(启动器与选择器)
查看>>
罗森伯格助力2011年中国智能建筑技术发展应用论坛哈尔滨站
查看>>
网络割接
查看>>
windows server 2016 活动目录(二)
查看>>
openstack G版 修改vm的flavor级别
查看>>
python_控制台输出带颜色的文字方法
查看>>
java泛型中特殊符号的含义
查看>>
一秒 解决 ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql 问题
查看>>