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

    题目描述

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

    思路

    思路一:

    位运算

    思路二:

    递归

    思路三:

    调用Integer的sum方法

    思路四:

    自增自减

    代码实现

    package Other;
    
    /**
     * 不用加减乘除做加法
     * 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
     * 思路:位运算
     * 1.两个数异或:相当于每一位相加,而不考虑进位;
     * 2.两个数相与,并左移一位:相当于求得进位;
     * 3.将上述两步的结果相加
     */
    public class Solution14 {
        public static void main(String[] args) {
            Solution14 solution14 = new Solution14();
            System.out.println(solution14.Add_4(2, -3));
    
        }
    
        /**
         * 自增自减
         *
         * @param num1
         * @param num2
         * @return
         */
        public int Add_4(int num1, int num2) {
            if (num1 < 0) {
                while (num1++ != 0) {
                    num2--;
                }
            } else if (num1 > 0) {
                while (num1-- != 0) {
                    num2++;
                }
            }
            return num2;
        }
    
        /**
         * 调用Integer的sum方法
         *
         * @param num1
         * @param num2
         * @return
         */
        public int Add_3(int num1, int num2) {
            return Integer.sum(num1, num2);
        }
    
        /**
         * 递归
         *
         * @param num1
         * @param num2
         * @return
         */
        public int Add_2(int num1, int num2) {
            if (num2 == 0)
                return num1;
            return Add(num1 ^ num2, (num1 & num2) << 1);
        }
    
        /**
         * 位运算
         *
         * @param num1
         * @param num2
         * @return
         */
        public int Add(int num1, int num2) {
            while (num2 != 0) {
                int temp = num1 ^ num2;//执行加法
                num2 = (num1 & num2) << 1;//进位操作
                num1 = temp;
            }
            return num1;
        }
    }
    
    
  • 相关阅读:
    XHR 学习整理
    IT职业规划与行业分析(转)
    hibernate的native sql查询(转)
    关于html selection 的经典示例
    html Selection
    javaWeb网购系统
    随笔,java我差很多
    系统架构:Web应用架构的新趋势---前端和后端分离的一点想法(转)
    oracle11g 重装操作系统后,如何利用原有oracle表空间文件还原数据库
    myeclipse maven 安装
  • 原文地址:https://www.cnblogs.com/wupeixuan/p/8623303.html
Copyright © 2011-2022 走看看