不使用加减乘除符号计算加法
生活随笔
收集整理的這篇文章主要介紹了
不使用加减乘除符号计算加法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
給定兩個(gè)正整數(shù),不使用加減乘除符號(hào)計(jì)算它們的和。
方法:例如,5+17=22,5是101,17是10001。
第一步各位相加得到的結(jié)果為10100(不考慮進(jìn)位)---與異或操作相符;
第二步記下進(jìn)位,為10---可用&操作來(lái)記下;
第三步把前兩步的結(jié)果相加,得到10110,轉(zhuǎn)換成十進(jìn)制正好為22.重復(fù)上述過(guò)程,直到不產(chǎn)生進(jìn)位為止。
int add(int a,int b) {int sum,tmp;do{sum = a ^ b;tmp = (a & b) << 1;a = sum;b = tmp;}while(tmp != 0);return sum; }
不通過(guò)第三變量交換兩個(gè)數(shù)的值有兩種方法:
int swap(int &a,int &b) {a ^= b;b ^= a;a ^= b; }
總結(jié)
以上是生活随笔為你收集整理的不使用加减乘除符号计算加法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。