写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
输入: a = 1, b = 1
输出: 2
提示:
a, b 均可能是负数或 0
结果不会溢出 32 位整数
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public int add(int a, int b) {
/*
---位运算---
转化成二进制,对二进制进行相加?NO对其进行& ^ 操作
^异或操作:相当于无进位求和 (不同为1 相同为0) 1^1=0 1^0=1 0^0=0
&与操作:相当于求每位的进位数 都是1才是1 1&1=0 1&0=0 0&0=0
add(a^b, (a&b) << 1)
每次无进位求 + 每次得到的进位数(进位数要左移一位 <<1)------我们需要不断重复这个过程,直到进位数为0为止;
*/
if(a==0){
return b;
}
if(b==0){
return a;
}
return add(a^b,(a&b)<<1);
}
}
扩充:java中进制转换函数
十进制转成十六进制:
Integer.toHexString(int i)
十进制转成八进制
Integer.toOctalString(int i)
十进制转成二进制
Integer.toBinaryString(int i)