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

题目

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

需要掌握

1、异或运算
两个数不相同,结果为1。两个数相同,结果为0。
2、与运算
两位同时为“1”,结果才为“1”,否则为0
3、左移
将一个二进制操作数对象按指定的移动位数向左移,左边溢出的位数被丢弃,右边的空位用0补充。
4、计算机二进制加法运算:
在这里插入图片描述

思路

第一步

将两个数进行异或运算,此时得到的结果相当于不进位进行的加法运算

第二步

将两个数进行与运算,并将其结果进行左移得到最后的结果

第三步

将第一步的结果与左移后的结果进行异或得到的最终结果为终值

第四步

重复操作,直到当与运算的结果为0,则异或运算的结果则为两个加数的和所对应的二进制数

代码

class Solution {
public:
    int Add(int num1, int num2)
    {
        while (num1 != 0)
		{
			int add = (num1^num2);
			num1 = (num1&num2) << 1;
			num2 = add;
		}
		return num2;
    }
};

热门文章

暂无图片
编程学习 ·

Unity2D教程:菜单界面、文字设置、常用界面功能

菜单界面创建一个UI-Image,会自动生成Canvas。 设置Canvas的设置模式为随屏幕改变 设置Image的伸展模式,在这个界面按下Alt键会变成这样,选择右下角那个就是填充整个Canvas了在当前Image下创建Button,将Button下面的Text和Button自身都弄成预置物Text可以加一个Outline组件…
暂无图片
编程学习 ·

【Linux基础编程】echo命令

01.文章目录 文章目录01.文章目录02.命令概述03.命令格式04.常用选项05.参考示例5.1 输出字符串5.2 输出变量PATH5.3 转义特殊字符5.4 重定向到文件中5.5 输出命令结果5.6 输出换行符5.7 输出退格符5.8 输出字符串不换行5.9 支持通配符5.10 指定输出颜色5.11 设置背景色5.12 文…
暂无图片
编程学习 ·

SSCMS部署Linux

一、进入手册:https://sscms.com/ 二、在首页点击,如下位置:三、点击快速上手,进入页面如下:四、点击linux中运行SSCMS https://sscms.com/docs/v7/getting-started/using-linux.html#_1%E3%80%81%E5%AE%89%E8%A3%85%E4%BE%9D%E8%B5%96%E5%8C%85 根据里面的步骤一步步进行…
暂无图片
编程学习 ·

系统整理springCloud (一),搭建父项目,管理jar包

一,应用springCloud 有一段时间了,Boot由1到2,springCloud 也到了H版本,alibaba 也已孵化维护自己版本,在这里对springCloud做一个系统的整理,版本为boot2版本。首先建立父工程cloud-parent加入jar包<!-- 统一管理jar包版本 --> <properties><project.bui…
暂无图片
编程学习 ·

springboot应用启动流程分析,嵌入式tomcat

之前我们分析了下springboot自动装载的原理,现在我们看看springboot应用启动的流程: 一般调用如下: // 应用代码SpringApplication.run(MiddlewareApplication.class, args); // SpringApplication.javapublic static ConfigurableApplicationContext run(Class<?> p…
暂无图片
编程学习 ·

源代码编译安装

源代码编译 使用源代码安装软件的优点获得最新的软件版本,计时修复bug 根据用户需要,灵活定制软件功能应用场景举例安装较新版本的应用时 当前安装的程序无法满足需要时 需要为应用程序添加新的功能时Tarball封包.tar.gz和.tar.bz2格式居多 软件素材参考:http://sourceforg…
暂无图片
编程学习 ·

asp.net core 3.1 中配置跨域

// 1.跨域配置 注册策略 services.AddCors(options => {options.AddPolicy("CorsPolicy", builder =>{builder.SetIsOriginAllowed((x) => true).AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod();});});// 2. 添加使用注册的策略app.UseCors("…
暂无图片
编程学习 ·

个人项目界面编写

个人项目界面代码编写前言一、首先要准备好工具二、界面都要引入css跟js三、注册界面 register,jsp注册效果图四、登陆 login.jsp登陆效果图五、主界面 main.jsp主界面效果图六、搜索界面 search.jsp搜索页效果图七、购物车 shopping.jsp购物车效果图 前言 我是先在bootstrap编…
暂无图片
编程学习 ·

Linux下Flume的安装

Linux下Flume的安装 一、前置条件 Flume 需要依赖 JDK 1.8+,JDK 参考:Linux下JDK的安装二 、安装步骤 2.1 下载并解压 下载所需版本的 Flume,这里我下载的是 Apache 版本的 Flume。下载地址为:http://www.apache.org/dyn/closer.lua/flume/1.9.0/apache-flume-1.9.0-bin.ta…
暂无图片
编程学习 ·

kuangbin专题8 生成树 次小生成树部分 HDU4081/UVA10600/UVA10462

前言 本来壮志凌云的想都做完 发现我在做梦。。。 朱刘算法太难了(自己太懒发现性价比比较低之后就没做而且算法介绍也太难懂了好几个关键词含义都不给简直简直太难了我枯 HDU4081 Qin Shi Huang’s National Road System 题意:给你一个图的各个点的坐标 再给你每个点的权值…
暂无图片
编程学习 ·

Haar特征描述算子与人脸检测

目录Haar-like 特征描述算子特征类别(模板)特征计算—积分图计算Haar特征值Haar特征值归一化(方法不唯一)Adaboost级联分类器级联分类器级联分类模型级联分类器的训练XML文件程序 Haar-like 特征描述算子 特征类别(模板) Haar(哈尔)特征模板分为三类:边缘特征、线性特征(…
暂无图片
编程学习 ·

java枚举enum

java枚举 jdk5.0之前的 public class SessonTest {public static void main(String[] args) {Seasson spring = Seasson.Spring;System.out.println(spring);} }class Seasson{//1.private final String seassonName;private final String seassonDesc;//2.private Seasson(Str…
暂无图片
编程学习 ·

es6中map()、some()、every()、filter()的区别

ES的Array对象有map、some、every、filter几个方法都能对数组中的每个对象进行处理,但是他们之间的功能又各有差别map():通过指定函数处理数组的每个元素,并返回处理后的数组。var numbers = [4, 9, 16, 25];function myFunction() {console.log(numbers.map(Math.sqrt)); }…
暂无图片
编程学习 ·

Golang语言基础教程:函数的返回值

函数的返回值1.1 什么是函数的返回值一个函数被调用后,返回给调用处的执行结果,叫做函数的返回值。调用处需要使用变量接收该结果1.2 一个函数可以返回多个值一个函数可以没有返回值,也可以有一个返回值,也可以有返回多个值。package main ​ import "fmt" ​ fu…
暂无图片
编程学习 ·

数据结构与算法(Python版)五十四:AVL树的定义和性能

平衡二叉查找树: AVL树的定义 我们来看看能够在key插入时一直保持平衡的二叉查找树: AVL树 AVL是发明者的名字缩写: G.M. AdelsonVelskii and E.M. Landis 利用AVL树实现ADT Map, 基本上与BST的实现相同 不同之处仅在于二叉树的生成与维护过程 AVL树的实现中, 需要对每个节…