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

    题目描述

    写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
    思路:只能是位运算。  按位与,得到的结果就是两个数字都为1的位置,按位与得到的结果 再左移一位,就是进位进上去的那些数
    在 按位异或, 0 1,1 0,得到1,0 0得到0.和加法的结果一致,1 1得到0,相当于加法进位之后的数,这个时候得到的结果就相当于加法操作 不过进上去的位都没有 加到高位上
    。这个时候把刚刚得到的进位的那些数,加上不进位加法的结果就是最后的结果,,,可是不能用加法啊,这个时候把得到的这两个数字,重复上述操作,直到没有进位(与操作为0),没有进位这个时候  两个数字 进行或  或者  异或运算得到的结果和加法就一样了。
     
    上代码
    public class Solution {
        public int Add(int num1,int num2) {
            int n1=(num1&num2)<<1;
            int n2=num1^num2;
            while((n1&n2)!=0){
                num1=n1;
                num2=n2;
                n1=(num1&num2)<<1;
                n2=num1^num2;
            }
            return n1^n2;
            
        }
    }
  • 相关阅读:
    实验3 颜色、字符串资源使用
    存储管理实验
    内存的分配与回收
    实验三
    JavaScript事件循环机制
    Js练习代码
    学习笔记(es6 react vue)
    express中间件的理解
    es6-Promise对象学习
    iscroll插件的使用
  • 原文地址:https://www.cnblogs.com/tobemaster/p/5926031.html
Copyright © 2011-2022 走看看