博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《剑指offer》写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。...
阅读量:6569 次
发布时间:2019-06-24

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

弱菜刷题还是刷中文题好了,没必要和英文过不去,现在的重点是基本代码能力的恢复。

【题目】

剑指offer

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

【思路】

直觉想到用二进制的位运算。最后写出来是一个迭代的过程。
每次迭代先计算x和y的和但不处理进位,那么相当于做异或,得到res1
然后处理进位问题,相当于计算与运算,得到res2
那么res2左移1位,再加到res1上,则整个运算的最终结果转化为res1+(res2<<1)
因为res2做左移,总会减小到0,那时候的res1就是最终结果

class Solution{public:    int Add(int x, int y){        int sum;        int carry;        while (true){            sum = x^y;            carry = (x&y) << 1;            y = carry;            x = sum;            if (y == 0){                break;            }        }        return sum;    }};

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

你可能感兴趣的文章
arailsdemo 2
查看>>
rails 奇怪的 joins
查看>>
Bean获取与实例化
查看>>
limit_req模块应用
查看>>
gcc 怎么编译 openssl 程序?
查看>>
优化nginx服务对CPU亲和力worker_cpu_affinity
查看>>
omnicore api速查表
查看>>
MySQL Connector to J 8.0 Q&A
查看>>
Mysql纯命令行添加用户
查看>>
MongoDB分片
查看>>
Centos编译安装Nginx
查看>>
【WebApp】离线webapp (android)开发
查看>>
如何做好网站SEO优化,需要会什么?
查看>>
网站建设与管理的基本流程
查看>>
spring上传文件并限制大小配置以及全局异常处理
查看>>
Windows下NDK直接编译编译boost 1.55(X86版本)
查看>>
系统重装后重新配置mysql
查看>>
FUSIONCHART 图例清空解决 ID 占用重复
查看>>
OPPO R17谍照现身 机身采用“叠层流光点彩工艺”
查看>>
基于Docker-compose部署wiki-confluence6.10
查看>>