题解 | #不用加减乘除做加法#
不用加减乘除做加法
https://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param num1 int整型
* @param num2 int整型
* @return int整型
*/
int Add(int num1, int num2 ) {
int ret = 0;
for(int i=0;i<32;i++)//分别分析二进制的每一位
{
if( (num1&(1<<i))!=0 && (num2&(1<<i))!=0) //两个数第i位上都是1
{
ret = ret | (1<<(i+1));//返回值下一位取1
}
else if( (num1&(1<<i))==0 && (num2&(1<<i))==0)//两个数第i位上都是零
{
;
}
else {//两个数第i位上1个是1 1个是0
if((ret&(1<<i)) == 0){//若返回值在该位上取0
ret = ret |(1 << i);//变为1
}
else{//返回值在该位上取1
ret = ret | (1<<(i+1));//返回值下一位取1
ret = ret & (~(1<<i)); //返回值该位再置0
}
}
}
return ret;
}
文远知行公司福利 555人发布
查看7道真题和解析