两数求和

牛客网-两数之和

使用加号简单实现代码

#include <iostream>
using namespace std;int main() {// write your code here......int a,b;cin>>a>>b;cout<<a+b;return 0;
}

不使用加法来实现中的逻辑运算

C++代码不用加法来是实现正数的的加。

  • 异或运算(^)意思就是 相同为0,不同为1
  • 另外一个就是与运算(&)都为1的时候为1
  • 位运算左移就相当于每次乘以2(<< 1)也就相当于进1位,让后进行运算,例如 1001的值位 9那么左移一位 1001<<1=10010 的为 从右往左就是 0+2+0+0+16=18

简单位运算实现正整数的加法操作的思路

  • 1·第一步通过异或来获取每个位置上不同的值
  • 2·通过&与运算来获取都位1的值的位置
  • 3·判断是否存在进位
  • 4·对当前carry的值做移动一位,来进行进位操作
  • 5·将sum的值赋给a
  • 6·将carry的值赋给b
  • 7·再尽心对应的^和&运算
#include <iostream>
#include <iostream>
using namespace std;
class Solution {public:int add(int a, int b) {//两个数值要进行相加-其位置上的数字可以使用^ 运算符 相同位0,不同位1,这样就获得了每个位置上的二进制代码//但是会存在一个问题,那就是在进位的时候-无法完成进位的操作//先来第一步int sum=a^b;//获取每个位置上数值//第2步考虑进位,什么情况下会有进位 ,那就是都位1的时候要进位,所以我们进行&运算,都为1的位置int carry=a&b;//那什么情况下就不进行进位了,那就是 a&b为0的时候,所以在这里我们使用while循环while(carry!=0){//左移运算相当于乘法运算,左移K位等于将这个数字乘以2也就进一位carry=carry<<1;a=sum;b=carry;//记录对应的值sum=a^b;//再进行一次运算//继续求当前 a&b的值carry=a&b;}return sum;}
};
int main() {int a,b;cin>>a>>b;Solution sum;cout<<sum.add(a,b);return 0;
}

两数之和-加法位运算相关推荐

  1. LeetCode 371. 两整数之和(位运算加法)

    1. 题目 不使用运算符 + 和 - ​​​​​​​,计算两整数 ​​​​​​​a .b ​​​​​​​之和. 示例 1: 输入: a = 1, b = 2 输出: 3示例 2: 输入: a = -2 ...

  2. 不使用算术运算符计算两数之和

    计算两个数之和,本来是一件小学生就会做的事,不对,幼儿园学生都会!可是偏偏有些面试官,要求计算两个数之和不能用加号"+",这不是故意刁难人嘛.可是为了offer,还是得硬着头皮去做 ...

  3. 【LeetCode】1.两数之和

    1.两数之和 一.问题描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

  4. [算法]力扣刷题-初级算法 - 数组(三)(数组篇完结) [两数之和] [有效的数独] [旋转图像]

    初级算法 - 数组篇完结: 初级算法 - 数组(一): https://blog.csdn.net/weixin_43854928/article/details/121315702 初级算法 - 数 ...

  5. 不使用算术运算符(+/-)怎么求两数之和?

    今天遇到了这样一个题 题目说了不能用算数运算符,那么我们就只能从 逻辑运算符 和 移位运算符 入手了. 我们知道 ^ (异或)操作是对两个数进行无进位求和,如果两个数相加本来就不产生进位,那么该和就是 ...

  6. 【计算两数之和】不使用加减乘除

    计算两数之和不论在计算机中还是生活中,都不算难(即使某些数据过大).但是如何能更高效的计算时一个难题,或者说在计算机内部是如何解析两个数之间的加法的,这就成了一个可以探讨的问题. 当然我们很了解十进制 ...

  7. LeetCode1——两数之和

    最近在家拧三阶魔方,把初级的玩法掌握了,也就是可以还原六个面了,速度不快,但是也很兴奋.三阶魔方的初级玩法按照套路拧就可以了,每一步需要完成的任务,该步骤转动的方法基本都是固定的,而且变化也并不是特别 ...

  8. 算法训练Day6 | LeetCode:242. 有效的字母异位词(数组作哈希表);349. 两个数组的交集(Set作哈希表);202.快乐数 (Set作哈希表);1. 两数之和(Map作哈希表)

    目录 LeetCode242. 有效的字母异位词 方法:数组作哈希表 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 Leetcode349. 两个数组的交集 方法一:用Set作HashMa ...

  9. 小白刷代码随想录day6 -- 242.有效的字母异位词,349.两个数组的交集,202快乐数,1.两数之和

    今天是刷代码随想录的day6.昨天day5元宵节休息日.今天开始了哈希表部分.对于哈希表的内容之前没有怎么学习过,所以今天的刷题主要以学习方法为主.待二刷的时候争取能够手撕代码! 哈希法 首先一个大前 ...

最新文章

  1. 一文览尽ToF深度相机技术
  2. vuecli项目文件命名_vue.js学习笔记(一)——vue-cli项目的目录结构
  3. linux shell 删除两个文件相同部分
  4. Android开发--传感器介绍
  5. “电梯演讲”最精炼、贴切的语言
  6. postman设置域名_Postman中文文档——证书(Certificates)
  7. 卫星通信频段:C频段、Ku频段和Ka频段
  8. 启明云推SigmaStar SSD201 双网口开发板的双网口配置说明
  9. 【两种方法】基础实验4-2.7 修理牧场 (25 分)
  10. element-ui Notification重叠问题,原因及解决办法
  11. ajax定时器怎么写,js定时器怎么写?就是在特定时间执行某段程序
  12. linux-使用xftp远程传输文件给主机
  13. 那些年,我们一起追过的足球
  14. 镜头的分类及选购指南
  15. [转载] python缩进报错_python缩进报错
  16. Python常见陷阱
  17. Mish:一个新的state of the art的激活函数,ReLU的继任者
  18. JAVA后台管理系统
  19. CISP考试真题,CISP测试题
  20. Selenium+Java - 结合sikuliX操作Flash网页

热门文章

  1. 南非世界杯 小组赛 巴西vs葡萄牙
  2. 搭建hexo主题Butterfly部署github+个人服务器
  3. 创建自定义 Windows PE 映像的过程
  4. SpringBoot:Error resolving template [index], template might not exist or might not be acce...解决方法
  5. Linux环境下Elasticsearch6.4.3安装
  6. tts 文本转语音 java_用TTS实现文本转语音
  7. pandas输出excel文件
  8. 小程序实现手机短信验证功能
  9. 机器学习中的数学ch11:基于高斯混合模型的密度估计(Density Estimation with Gaussian Mixture Models)
  10. python手机app自动_python+appium 自动化1--启动手机京东app