Advertisement

异或与与操作的新理解——不做加法运算

阅读量:

剑指offer JZ47 不用加减乘除做加法

题目描述:

编写一个函数,用于计算两个整数的总和,且在函数内部不允许使用加减乘除这四个基本运算符号。

解体思路分析

在计算机系统中,整数通常以二进制补码的形式进行存储,加法运算的核心在于对每一位二进制数执行加法操作,并将产生的进位传递至更高位。换句话说,当两个二进制数值相加时,其结果可以分解为“不考虑进位的加法结果”与“进位部分”的总和。其中,“异或”运算实际上等同于不带进位的加法过程;而“与”运算则用于计算进位信息,并通过左移操作实现进位的传递

举个例子:

假设我们设定计算10+7的运算过程
10+7 = 1010+0111
1010^0111 = 1101 //此处为逐位相加并忽略进位的结果
1010&0111 = 0010 //此为进位信息,将其左移一位后得到新的加数 0100
此时,计算式变为:10+7 = 1010+0111 = 1101+0100

继续运算:
1102^4 = 256 + 64 + 8 + 2 = 334?不对,应该是二进制运算。抱歉,我需要重新计算。

重新开始:
在二进制中,计算表达式应为:
首先进行异或操作与与操作:
对于二进制数的加法,采用逐位异或和与操作的方式进行处理。例如,在对数

全部评论 (0)

还没有任何评论哟~