还是大佬厉害,我就只能一位一位地判断有没有进位
不用加减乘除做加法
http://www.nowcoder.com/questionTerminal/59ac416b4b944300b617d4f7f111b215
class Solution {
public:
int Add(int num1, int num2)
{
int a = num1;
int b = num2;
unsigned int m = 0x00000001; // 位置标志
unsigned int n = 0x00000000; // 进位标志
int rtn = 0x00000000;
for (int i = 0; i < 32; i++) {
if (bool(m&a)&&bool(b&m)) { // 该位都为1
if (bool(n))
rtn = (rtn | m); // 该位设为1
n = m << 1; // 向左有进位
}
else if (bool(m&a) || bool(b&m)) { // 只有一位为1
if (bool(n)) { // 有低位进位,该位为0
n = m << 1; // 向左有进位
}
else rtn = rtn | m; // 没有低维进位该位为1
}
else {
if (bool(n)) rtn = (rtn | m); // 有低位进位该位为1;
n = 0x00000000; // 没有低位进位该位为1且不进位
}
m = m << 1;
}
return rtn;
}
};