zoukankan      html  css  js  c++  java
  • 50.不用加减乘除求和

    题目描述:

      写一个函数,两个整数的和,要求在函数体内不能使用加减乘除四则运算符。

    思路分析:

    比如如何得到15+7=22这个结果。

      第一步:我们做各位的相加,不进位,得到12.

      第二步:做进位,5+7有进位,进位是10。

      第三步:将前步进行相加得到最后的结果22。

      题目要求我们不能使用加减乘除,那么我们还能想到的运算就是位运算,在二进制中各位相加不进位可以用异或操作来代替,求进位的时候,可以将两数相与,然后左移一位。因为对于0加0,0加1,1加0,都不会产生进位,只有1加1的时候会产生一个向前的进位,所以与后左移一位。最后将前两步的结果求和,这将会是重复前两步的操作,当不产生进位时,就会得到结果。

    代码:

    public class Test{
        public int sum(int sum1,int sum2){
            while(sum2!=0){ //没有进位就退出
                //第一步:对各位不进位相加
                int temp=sum1^sum2;
                //第二步:求进位
                sum2=(sum1&sum2)<<1;  //产生的进位
                //第三步:求和,求和的过程是将前两步值相加,做法就是重复前两步
                sum1=temp;
            }
            return sum1;
        }
    }
    
  • 相关阅读:
    servlet里面拿到common.property的属性
    js 播放声音文件
    dataGridViewX操作
    CYQ学习主要摘要4
    CYQ学习主要摘要3
    CYQ学习主要摘要2
    CYQ学习主要摘要
    EF操作VS中
    C# 文件与二进制互转数据库写入读出
    简单的线程与界面通用方法,不是很好,但是很方便
  • 原文地址:https://www.cnblogs.com/yjxyy/p/10935569.html
Copyright © 2011-2022 走看看