LeetCode371. 两整数之和

题目:

不使用运算符 + 和-,计算两整数a 、b之和。

示例:

若 a = 1 ,b = 2,返回 3。

Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.

Example:

Given a = 1 and b = 2, return 3.

示例代码:

 public static int getSum(int a, int b) {
		   //按位取异或
		    int result = a^b;
		    //判断是否需要进位
	        int forward = (a&b) <<1;
	        if(forward!=0){
	        	//如有进位,则将二进制数左移一位,进行递归
	        	return getSum(result,forward);
	        }
	        return result;
	    }

本题涉及知识:

1.按位取与(&)

两值按二进制位进行 “与”运算

规则:0&0=0;0&1=0;1&0=0;1&1=1

举个栗子: a = 5  ,b = 3

a:0101

b:0011

r:0001  

2.按位取或(|)
两值按二进制位进行 “或”运算
规则:0|0=0;0|1=1;1|0=1;1|1=1

举个栗子: a = 5  ,b = 3

a:0101

b:0011

r:0111

3.按位取异或(^)
两值按二进制位进行 “异或”运算

规则:0^0=0;0^1=1;1^0=1;1^1=0

举个栗子: a = 5  ,b = 3

a:0101

b:0011

r:0110

4.左移运算符“<<”及右移运算符“>>”

左移运算符" << n ":

将一个数的二进制位全部向左移n位,最左边一位舍弃,右边补0。

举个栗子: 

a = 5

a<<1

0101 -> 1010

左移一位后,a = a * 2 = 10;

右移运算符">>":

将一个数的二进制位全部向右移n位,最右边一位舍弃,左边补0。

举个栗子: 

a = 5

a>>1

0101 -> 0010

左移一位后,a = a / 2 = 2;


如有错误,欢迎指出,十分感谢。


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值