不用+、-、×、÷做加法

來自: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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章