zoukankan      html  css  js  c++  java
  • 不用加减乘除做加法

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

    思路:因为不能使用四则运算,对数字做运算,我们只能考虑位运算了。我们先不考虑进位,对两数字进行异或运算,这样,就可以得到一个没有进位的和,因为若是进位,则两数对应位上的值肯定都是为1的,所以,我们可以通过两数求&运算,然后左移两位得到进位的情况。代码如下:

     1 int Add(int num1,int num2)
     2 {
     3     int sum,carry;
     4     do
     5     {
     6         sum=num1^num2;
     7         carry=(num1&num2)<<1;
     8 
     9         num1=sum;
    10         num2=carry;
    11     }
    12     while(num2 !=0)
    13 
    14     return num;
    15 }

    至于交换两整数的值,可以采用如下方法:

    基于加减法 基于异或运算
    a=a+b a=a^b
    b=a-b b=a^b
    a=a-b a=a^b
  • 相关阅读:
    2016.11.21随笔
    2016.11.19随笔
    年月日
    导航position:absolute
    360搜索(边框)
    导航代码position:relative
    邮箱注册代码
    2016.11.18随笔
    2016.11.17随笔
    个人简历网页版代码
  • 原文地址:https://www.cnblogs.com/love-yh/p/7445811.html
Copyright © 2011-2022 走看看