题解 | #不用加减乘除做加法#

不用加减乘除做加法

https://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param num1 int整型 
 * @param num2 int整型 
 * @return int整型
 */
int cmp(int n,int i)
{
	return (n & 1 << i) == (1 << i);
}


int Add(int num1, int num2) {
	int carry = 0;
	int i = 0;
	int sum = 0;
	for (i = 0; i < 32; i++)
	{
		if (carry == 0)
		{
			if (cmp(num1, i) == 0 && cmp(num2, i)==0)
			{
				
			}
			else if (cmp(num1, i) == 1 && cmp(num2, i) == 1)
			{
				carry = 1;
			}
			else
			{
				sum = sum | 1 << i;
			}
		}
		else
		{
			if (cmp(num1, i) == 0 && cmp(num2, i) == 0)
			{
				sum = sum | 1 << i;
				carry = 0;
			}
			else if (cmp(num1, i) == 1 && cmp(num2, i) == 1)
			{
				sum = sum | 1 << i;
				carry = 1;
			}
			else
			{
				carry = 1;
			}
		}
	}
	return sum;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务