來自:http://zhedahht.blog.163.com/
其中有一題是:不用+、-、×、÷做加法。
樓主給出了位運算方法,如下:
int AddWithoutArithmetic(int num1, int num2) {
// 利用異或,與操作,遞歸調用
if (num2 == 0)
return num1;
int sum = num1 ^ num2;
int carry = (num1 & num2) << 1;
return AddWithoutArithmetic(sum, carry);
}
後面網友給出了另外一種巧妙方法,利用地址偏移實現加法,代碼如下:
int Add(int a,int b) {
// 把a理解爲首地址,b理解爲偏移量
// a b爲負數也能執行
char *c;
c = (char *)a;
return &c[b];
}
特此mark