不使用加减乘除符号计算加法
生活随笔
收集整理的這篇文章主要介紹了
不使用加减乘除符号计算加法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定兩個正整數,不使用加減乘除符號計算它們的和。
方法:例如,5+17=22,5是101,17是10001。
第一步各位相加得到的結果為10100(不考慮進位)---與異或操作相符;
第二步記下進位,為10---可用&操作來記下;
第三步把前兩步的結果相加,得到10110,轉換成十進制正好為22.重復上述過程,直到不產生進位為止。
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; }
不通過第三變量交換兩個數的值有兩種方法:
int swap(int &a,int &b) {a ^= b;b ^= a;a ^= b; }
總結
以上是生活随笔為你收集整理的不使用加减乘除符号计算加法的全部內容,希望文章能夠幫你解決所遇到的問題。