如何不用四则运算实现两个数相加
考点:计算机是如何实现加法的
思路:用与、或、非模拟计算机实现加法
过程:
加法只有两种情况①有进位的加法②没有进位的加法
-
针对情况①,只需要异或运算就可以了,这种情况可以一次算出结果
例如:1+2
-
针对情况②,由于异或没有考虑到1和1相遇的情况(两个1也为0),因此需要把进位产生的值加上;而这个值可以一次与运算(找到两个1的位置)再加一次向左位移得到;由于是二进制,不会像十进制一样进位后还有余数,因此只加进位产生的值就行
例如:1+1
当两种情况同时发生的时候,就需要把两种情况的结果再加一次,也就产生了迭代,迭代到只有情况①的时候结束。
代码如下:
public class Solution