java 给出两个整数a和b , 求他们的和。不用用运算符+
分析
首先来理解一下十进制的加法
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 , 求他们的和。不用用运算符+相关推荐
- c语言学习-利用函数指针的方法,求任意给出两个整数的x和y的和、差。
编写一个程序,利用函数指针的方法,求任意给出两个整数的x和y的和.差. 程序流程图: 代码: #include<stdio.h> void main() {int x,y,*m=& ...
- java找出两个字符串中所有共同的子串_【Java笔记】
Leetcode 1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是, ...
- java输入两个整数_求平均值._用C语言编写:完成从键盘输入两个整数a和b,求平均值ave,并输出平均值...
#includevoid main(){int a,b,ave;printf("输入两个整数:');scanf("%d%d",&a,&b);ave=(a+ ...
- 如何求出两个整数的最大公约数
目录 前言 1.暴力枚举法 2.辗转相除法 3.更相减损术 4.更相减损术与移位相结合 前言 几个整数中公有的约数,叫做这几个数的公约数:其中最大的一个,叫做这几个数的最大公约数.例如:12.16的公 ...
- java算出两个时间差(LocalDateTime)
对象介绍 Object desc format LocalDateTime 日期时间 yyyy-MM-dd'T'HH:mm:ss LocalDate 日期 yyyy-MM-dd LocalTime 时 ...
- java找出两个List集合的重复项
文章目录 1. 使用 LinkedHashSet 2. java8语法 1. 使用 LinkedHashSet public static void main(String[] args){List& ...
- java找出两个数组中不同元素_java 找出两个list中不同值
展开全部 可以通过遍历两个string数组来实现. 代码e5a48de588b63231313335323631343130323136353331333365656633如下: package co ...
- java 中 实现两个整数相除并且保留一位小数
/*** * 整数相除 保留一位小数 * @param a * @param b * @return */ public static Str ...
- 给出两个整数n和k,返回从1到n中取k个数字的所有可能的组合
class Solution {public:/*** * @param n int整型 * @param k int整型 * @return int整型vector<vector<> ...
最新文章
- zcu102 hdmi example(一)
- Struts 2再曝远程代码执行漏洞S2-037
- 在springboot项目中如何创建子项目
- 微信小程序错误 Cloud API isn‘t enabled, please call wx.cloud.init first 解决
- php html邮件,php发送HTML邮件
- 通过界面生成时不存在的数据刷新界面引起的卡顿问题
- QT5更改应用程序图标
- ACM国际编程大赛夺冠,李现和他的队员们一定把这8本书翻烂了
- 基于JAVA+SpringMVC+Mybatis+MYSQL的图书馆预约占座管理系统
- python HTTP请求过程
- 程序员述职报告范文_程序员个人述职报告范文精选3篇
- DGZX1564 - 水塔水位
- Linux/Ubuntu18.04安装RTL8811cu驱动
- 莫纳什大学FIT1043 assignment2课业解析
- 海康威视:笔试题(20190908)
- JavaWeb自学笔记(一)
- 微信小程序中如何改变switch的样式
- 学海无涯!java流式计算性能
- 蜜糖?砒霜? 区块链真skr磨人小妖精!
- 100题前端面试[题目+答案] -- 自用