zoukankan      html  css  js  c++  java
  • 代码题(53)— 不用加减法做加法、交换两个变量

    1、不用加减乘除做加法

    剑指offer面试题47:不用加减乘除做加法
    写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

    class Solution {
    public:
        int Add(int num1, int num2)
        {
            while(num2!=0)
            {
                int temp = num1 ^ num2;//求相加,不管进位
                num2 = (num1 & num2)<<1;//求进位
                num1 = temp;
            }
            return num1;
        }
    };

    2、交换两个变量

       不使用新的变量,交换两个变量的值。

    (1)基于加法的方法

    a = a+b;
    b = a-b; // 此时 a+b-b=a;
    a = a-b; // 此时 a+b-a=b;

    (2)基于异或运算

    a = a^b; // 找到二者的不同
    b = a^b; // 二者不同与 b 相与得到 a
    a = a^b; // 
  • 相关阅读:
    第九周PSP
    c++的继承方式
    matlab的应用
    beta发布的评论
    本周psp
    历年作品点评
    JSON解析数据
    每周工作量及代码统计(第七周)
    词频统计(WEB)版
    评论alpha发布
  • 原文地址:https://www.cnblogs.com/eilearn/p/9528596.html
Copyright © 2011-2022 走看看