不用+,-,x,/做加法運算

來源:互聯網
上載者:User

廢話少說,直接上例子。例如要算14+8的和,平常的思維方式,4+8得2進1,1+1得2不進位,結果就是22.思維方式就是自右往左,邊加邊求和,再進位,再重複以上步驟。

但是,現在限制住了加減乘除,剩下的只有與或非了。於是加可用異或,求進位可用與,重複上述步驟直到結果正確即可。改進一下,我們可分為三步走:

1,整體求和(異或)

2,整體求進位(與)

3,重複以上步驟(迴圈或遞迴)

C++代碼如下:

int add(int num1,int num2){while(num2){int sum=num1 ^ num2 ;//異或int carry=(num1 & num2) << 1 ;//與num1=sum;num2=carry;}return num1;}

更巧妙的思路:

int add(int a,int b){    char* p= (char *)a ;cout<<*p<<endl;    return (int)&p[b];//p[b]等價於*(p+b)}

思路是:定義一個char型指標指向a代表的地址,假如a=33,則p指向地址33,p[b]等價於p+b號地址的值,假設b為44,則p[b]指向77號地址的值,所以,對它取地址,就可以得出a+b的值。很巧妙。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.