加算減算を使用しないで2つの加算を実現
1876 ワード
加減乗除を用いずにシフトが考えられる.
演算とは2つの数を加算したキャリー状況を反映することができる.異或は2つの数の加算がキャリーを考慮しない結果を反映している.
2つの数の加算結果は、進位の数に進位しない数を加える.
このようにして、再帰関係が出てきます.
いつ停止しますか?進位がなくなった場合、異或の結果を直接返すことができます.
終
演算とは2つの数を加算したキャリー状況を反映することができる.異或は2つの数の加算がキャリーを考慮しない結果を反映している.
2つの数の加算結果は、進位の数に進位しない数を加える.
このようにして、再帰関係が出てきます.
いつ停止しますか?進位がなくなった場合、異或の結果を直接返すことができます.
1 int bitadd(int a, int b)
2 {
3 int u, c;
4 u = a & b; //
5 c = a ^ b;
6
7 if (u != 0)
8 {
9 return bitadd(u<<1, c);
10 }
11 else
12 {
13 return c;
14 }
15 }
終