zoukankan      html  css  js  c++  java
  • 《剑指offer》写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

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

    【题目】
    剑指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;
    	}
    };
    
  • 相关阅读:
    Vue源码解析
    开发调试的几个小技巧
    C#课后小作业
    C#随堂
    C#是数据类型
    插眼
    SQL基本的45题
    SQL创建数据库、建表、填入内容
    T-SQL语句基础
    SQL基本数据类型等
  • 原文地址:https://www.cnblogs.com/zjutzz/p/6501027.html
Copyright © 2011-2022 走看看