分析

首先来理解一下十进制的加法
8884 + 146 = 9030
依据 不进位+进位这一思想进行详述
首先是不进位的结果是8920

哪几位需要进位呢? 0011 也就是个位和十位需要进位,个位、十位进位之后的值为110,而这个结果是需要加到上面的不进位的值,即8920+110 = 8030 同样这是没有进位的,但是在这次相加的过程中也有进位的考量,哪几位呢?即100,百位的位置需要进位,那就再左移即可,为1000,然后加上上面的不进位相加的和,最后结果是9030,最后再看一下,还需不需要进位呢?发现8030&1000=0(按着二进制的形式写的,便于理解),此时是没有再需要进位的了,即最后结果就是9030了。

下面推广到二进制,是同样的思路的。
来看一下13+7这两个数的求和过程
13的二进制表示为:1101
7的二进制表示为: 0111
先求不进位的两个数之和,1101^0111 = 1010 ,而哪几位需要进位呢?
可以用&运算符来确定,即1101 & 0111 = 0101,将此结果左移即是进位之后需要加在1010上面的值,这就有变成刚开始的状态了,两个数相加,先算不进位状态的和,然后再看哪几位需要进位,上面两种状态的值为 0000(不进位的结果) 1010(需要进位,待计算),后面的值再左移表示进位之后的结果为10100,
此时新的两个数是0000,10100,

public class Solution{/*** @param a: An integer* @param b: An integer* @return: The sum of a and b */public int aplusb(int a, int b) {if (b==0) return a;return aplusb(a^b, (a&b)<<1);}
}

java 给出两个整数a和b , 求他们的和。不用用运算符+相关推荐

  1. c语言学习-利用函数指针的方法,求任意给出两个整数的x和y的和、差。

    编写一个程序,利用函数指针的方法,求任意给出两个整数的x和y的和.差. 程序流程图: 代码: #include<stdio.h> void main() {int x,y,*m=& ...

  2. java找出两个字符串中所有共同的子串_【Java笔记】

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

  3. java输入两个整数_求平均值._用C语言编写:完成从键盘输入两个整数a和b,求平均值ave,并输出平均值...

    #includevoid main(){int a,b,ave;printf("输入两个整数:');scanf("%d%d",&a,&b);ave=(a+ ...

  4. 如何求出两个整数的最大公约数

    目录 前言 1.暴力枚举法 2.辗转相除法 3.更相减损术 4.更相减损术与移位相结合 前言 几个整数中公有的约数,叫做这几个数的公约数:其中最大的一个,叫做这几个数的最大公约数.例如:12.16的公 ...

  5. java算出两个时间差(LocalDateTime)

    对象介绍 Object desc format LocalDateTime 日期时间 yyyy-MM-dd'T'HH:mm:ss LocalDate 日期 yyyy-MM-dd LocalTime 时 ...

  6. java找出两个List集合的重复项

    文章目录 1. 使用 LinkedHashSet 2. java8语法 1. 使用 LinkedHashSet public static void main(String[] args){List& ...

  7. java找出两个数组中不同元素_java 找出两个list中不同值

    展开全部 可以通过遍历两个string数组来实现. 代码e5a48de588b63231313335323631343130323136353331333365656633如下: package co ...

  8. java 中 实现两个整数相除并且保留一位小数

    /***      * 整数相除 保留一位小数      * @param a      * @param b      * @return      */     public static Str ...

  9. 给出两个整数n和k,返回从1到n中取k个数字的所有可能的组合

    class Solution {public:/*** * @param n int整型 * @param k int整型 * @return int整型vector<vector<> ...

最新文章

  1. zcu102 hdmi example(一)
  2. Struts 2再曝远程代码执行漏洞S2-037
  3. 在springboot项目中如何创建子项目
  4. 微信小程序错误 Cloud API isn‘t enabled, please call wx.cloud.init first 解决
  5. php html邮件,php发送HTML邮件
  6. 通过界面生成时不存在的数据刷新界面引起的卡顿问题
  7. QT5更改应用程序图标
  8. ACM国际编程大赛夺冠,李现和他的队员们一定把这8本书翻烂了
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的图书馆预约占座管理系统
  10. python HTTP请求过程
  11. 程序员述职报告范文_程序员个人述职报告范文精选3篇
  12. DGZX1564 - 水塔水位
  13. Linux/Ubuntu18.04安装RTL8811cu驱动
  14. 莫纳什大学FIT1043 assignment2课业解析
  15. 海康威视:笔试题(20190908)
  16. JavaWeb自学笔记(一)
  17. 微信小程序中如何改变switch的样式
  18. 学海无涯!java流式计算性能
  19. 蜜糖?砒霜? 区块链真skr磨人小妖精!
  20. 100题前端面试[题目+答案] -- 自用

热门文章

  1. linux命令 chmod_Linux chmod命令示例
  2. struts2自定义标签_Struts 2 –没有为动作和结果输入定义结果
  3. Android RecyclerView布局动画
  4. 如何一边训练一遍验证
  5. Java开发中的基本数据类型有哪些?
  6. 以太坊POA共识机制Clique源码分析
  7. 我的天哪我有博客了!
  8. 解决tomcat 的端口被占用问题
  9. java使用smartupload组件实现文件上传的方法
  10. android 时间